当前位置: 首页 > news >正文

【Python爬虫】案例_百度贴吧

声明:案例只用于学习,不得恶意使用

要求:获取帖子的标题和链接

import requests
from lxml import etreeclass Tieba(object):def __init__(self,name):self.url = 'https://tieba.baidu.com/f?ie=utf-8&kw={}'.format(name)self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'}def get_data(self,url):response = requests.get(self.url, headers=self.headers)return response.contentdef parse_data(self,data):html = etree.HTML(data)el_list = html.xpath('//*[@id="thread_list"]/li/div/div[2]/div[1]/div[1]/a')print(len(el_list))def run(self):data = self.get_data(self.url)self.parse_data(data)if __name__ == '__main__':tieba = Tieba('龙之信条2')tieba.run()

运行后发现结果是0,因为内容被注释了

解决方法1:

更改User-Agent,将其改为低版本的浏览器

'User-Agent':'Mozilla/4.0(compatible;MSIE 5.01;Windows NT 5.0;DigExt)'

解决方法2:

用正则表达式去掉注释

data = data.decode().replace("<!--", "").replace("-->", "")

完整代码:

import requests
from lxml import etreeclass Tieba(object):def __init__(self,name):self.url = 'https://tieba.baidu.com/f?ie=utf-8&kw={}'.format(name)self.headers = {#'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36''User-Agent':'Mozilla/4.0(compatible;MSIE 5.01;Windows NT 5.0;DigExt)'# 内容是被注释的,但低端浏览器不会进行注释}def get_data(self,url):response = requests.get(self.url, headers=self.headers)return response.contentdef parse_data(self,data):# 或者这样把注释删去#data = data.decode().replace("<!--", "").replace("-->", "")html = etree.HTML(data)el_list = html.xpath('//*[@id="thread_list"]/li/div/div[2]/div[1]/div[1]/a')print(len(el_list))data_list = []for el in el_list:temp = {}temp['title'] = el.xpath('./text()')[0]temp['link'] = 'http://tieba.baidu.com' + el.xpath('./@href')[0]data_list.append(temp)try:next_url = 'https:' + html.xpath('//a[contains(text(),"下一页>")]/@href')[0]except:next_url = Nonereturn data_list,next_urldef save_data(self,data_list):for data in data_list:print(data)def run(self):while True:data = self.get_data(self.url)data_list, next_url = self.parse_data(data)self.save_data(data_list)print(next_url)if next_url == None:breakself.url = next_urlif __name__ == '__main__':tieba = Tieba('龙之信条2')tieba.run()

可完善的地方:save_data()方法,将数据保存为csv或xlsx文件

快来试试吧

可参考:【Python爬虫】基本操作中"数据存储——CSV文件"

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 埃文科技携数据要素产品亮相第七届数字中国建设峰会
  • 前端面试题日常练-day38 【面试题】
  • Java---Cloneable接口---浅克隆和深克隆
  • 深度学习-序列模型
  • GoldenEye-v1(vulnhub)靶机练习实践报告
  • windows11 system进程CPU占比过高解决方案
  • 鸿蒙应用开发之OpenGL应用和X组件8
  • 大字体学生出勤记录系统网页源码
  • 打破传统界限,数字沙盘演绎乡村魅力!
  • AI助力科研:自动化科学构思生成系统初探
  • 消费增值:国家支持的消费新零售模型
  • PID控制中积分项目的理解,消除稳态误差的作用,表示着过去(PID积分控制)
  • vue3主题切换按钮与功能实现
  • 海外大带宽云服务器有哪些优势
  • XML和JSON的区别
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Apache Pulsar 2.1 重磅发布
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • es6要点
  • Laravel核心解读--Facades
  • leetcode-27. Remove Element
  • python 学习笔记 - Queue Pipes,进程间通讯
  • springMvc学习笔记(2)
  • WePY 在小程序性能调优上做出的探究
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • yii2中session跨域名的问题
  • 检测对象或数组
  • 入门级的git使用指北
  • 深入浅出Node.js
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 思否第一天
  • 用element的upload组件实现多图片上传和压缩
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • zabbix3.2监控linux磁盘IO
  • 带你开发类似Pokemon Go的AR游戏
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​虚拟化系列介绍(十)
  • # wps必须要登录激活才能使用吗?
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • $.proxy和$.extend
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (笔试题)分解质因式
  • (分布式缓存)Redis哨兵
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)jdk与jre的区别
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net 使用ajax控件后如何调用前端脚本