一、爬取目标
大家好,我是马哥。
今天分享一期python爬虫案例,爬取目标是微博的微博数据,包含:
页码, 微博id, 微博bid, 微博作者, 发布时间, 微博内容, 转发数, 评论数, 点赞数
经过分析调研,发现微博有3种访问方式,分别是:
PC端网页:https://weibo.com/
移动端:https://weibo.cn/
手机端:https://m.weibo.cn/
最终决定,通过手机端爬取。
这里,给大家分享一个爬虫小技巧。当目标网站既存在PC网页端,又有手机移动端,建议爬取移动端,原因是:移动端一般网页结构简单,并且反爬能力较弱,更方便爬虫爬取。
二、展示爬取结果
我通过爬虫代码,爬取了某关键字下的前80页微博,部分数据如下:
一共635条数据,共80页,差不多每页不到10条的数据。
三、讲解代码
首先,导入需要用到的库:
然后,定义一个转换时间字符串的函数,因为爬取到的时间戳是GMT格式(类似这种:Fri Jun 17 22:21:48 +0800 2022)的,需要转换成标准格式:
定义一个请求头,后面发送请求的时候带上它,防止反爬:
打开chrome浏览器,按F12进入开发者模式,按照下图操作,分析出目标请求地址:
根据分析结果,编写请求代码:
直接用json格式,接收返回的数据:
下面,通过jsonpath,快速解析出各个字段数据。
科普知识:jsonpath是一种快速解析json数据的方法,语法规则有点像xpath,这里就不展开讲了。详细介绍请见:
https://blog.csdn.net/qq_36595013/article/details/109455924
下面展示部分字段解析过程:
把所有的字段的list数据,拼装成DataFrame格式数据:
最后,通过to_csv,(记得加上参数 encoding='utf_8_sig')把数据持久化存储下来。
需要说明的是,微博数据爬取下来后,会存在少量重复数据,所以,去重处理一下:
最终,数据保存完毕。
四、同步视频
4.1 演示视频
4.2 讲解视频
五、获取完整源码
爱学习的小伙伴,本次分析过程的完整python源码及结果数据,我已打包好,并上传至我的微信公众号"老男孩的平凡之路",后台回复"爬微博"即可获取!
我是@马哥python说,持续分享python干货中!