世界热消息:【微博签到爬虫】用python爬了上千条m端微博签到数据

  • 2023-02-07 07:55:20
  • 来源:哔哩哔哩

一、爬取目标

大家好,我是 @马哥python说,一枚10年程序猿。

分享一期python爬虫案例,爬取目标是新浪微博的微博签到数据,字段包含:

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


(资料图)

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

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

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

手机端:https://m.weibo.cn/

最终决定,通过手机端爬取。

这里,给大家分享一个爬虫小技巧。当目标网站既存在PC网页端,又有手机移动端,建议爬取移动端,原因是:移动端一般网页结构简单,并且反爬能力较弱,更方便爬虫爬取。

二、展示爬取结果

通过爬虫代码,爬取了“环球影城”这个关键字下的前100页微博,部分数据如下:

一共翻页了100页,大概1000条左右微博。

三、讲解代码

首先,导入需要用到的库:

然后,定义一个转换时间字符串的函数,因为爬取到的时间戳是GMT格式(类似这种:Fri Jun 17 22:21:48 +0800 2022)的,需要转换成标准格式:

定义一个请求头,后面发送请求的时候带上它,防止反爬:

打开chrome浏览器,在m端网址搜索"环球影城",选择地点,选择第一条搜索结果"北京环球影城",如下:

获取地点对应的containerid,后面会用到,爬虫代码如下:

点击第一个地点"北京环球影城",跳转到它对应的微博签到页面:

首先打开开发者模式,然后往下翻页,多翻几次,观察XHR页面的网络请求:

根据分析结果,编写请求代码:

其中,since_id每次翻页+1,相当于页码数值。

请求参数,可以在Payload页面获取:

下面开始发送请求并解析数据:

定义一些空列表,用于后续保存数据:

以"微博博文"为例,展示代码,其他字段同理,不再赘述。

把所有数据保存到Dataframe里面:

最终,把所有数据保存到csv文件:

说明一下,由于每次保存csv都是追加模式(mode='a+'),所以加上if判断逻辑:

如果csv存在,说明不是第一次保存csv,不加表头;

如果csv不存在,说明是第一次保存csv,加上表头。

如此,可避免写入多次表头的尴尬局面。

整个代码中,还含有:正则表达式提取博文、爬取展开全文、从博文中提取签到地点、数据清洗(删除空数据、去重复)等功能,详细请见原始代码。

四、同步视频

演示视频:

五、获取完整源码

爱学习的小伙伴,本次分析过程的完整python源码及结果数据,我已打包好,并上传至我的微信公众号"老男孩的平凡之路",后台回复"爬微博签到"即可获取。

我是@马哥python说 ,持续分享python干货!

推荐阅读:

关键词: 发送请求 推荐阅读 数据清洗

Copyright@  2015-2022 西方包装网版权所有  备案号: 沪ICP备2020036824号-7   联系邮箱:5 626 629 @qq.com