专栏/【python爬虫案例】爬取微博任意搜索关键词的微博数据

【python爬虫案例】爬取微博任意搜索关键词的微博数据

2022年06月25日 08:45--浏览 · --喜欢 · --评论
粉丝:4596文章:84

一、爬取目标

大家好,我是马哥

今天分享一期python爬虫案例,爬取目标是微博的微博数据,包含:

页码, 微博id, 微博bid, 微博作者, 发布时间, 微博内容, 转发数, 评论数, 点赞数


经过分析调研,发现微博有3种访问方式,分别是:

  1. PC端网页:https://weibo.com/

  2. 移动端:https://weibo.cn/

  3. 手机端: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干货中!



投诉或建议