【python】爬虫-微博评论-武大樱花雨为例 笔记

〇、前情提要

b站跟着up主 龙王山小青椒 学习爬虫。
参考:

  1. python爬虫-微博评论-武大樱花雨为例
    https://www.bilibili.com/video/BV1s7411U7AS
  2. 人民日报 【#武汉大学樱花雨#[心]】微博
    https://m.weibo.cn/detail/4485613145089303
  3. 解决chrome控制台查不到请求头的cookie
    https://blog.csdn.net/qq_36838406/article/details/101943872
  4. 【mac】使用jsonview在chrome中将json层级展示
    https://blog.csdn.net/weixin_43210113/article/details/107658947

提示:
尊重up劳动成果,不放源代码了。支持的请去一键三连后找up要噢~
我用的微博页面和up主不同,请勿因立场问题开麦。


一、数据源-移动网页端微博

网址解析

网址https://m.weibo.cn/detail/4485613145089303https://m.weibo.cn为微博移动网页端,/detail为评论页,/4485613145089303为该条微博的id。
在这里插入图片描述


二、cookie获取

原因

由于微博的限制,必须登录后才能看到所有评论,所以要先获取cookie。

如何获取

打开检查,网络(如果此时无内容就command+r刷新页面),选中XHR资源,找Type为fench的文件单击。
在这里插入图片描述

展开Request Headers,找到Cookie,可以放到代码中用来登录查看评论。
在这里插入图片描述

  1. 如果chrome控制台查不到请求头的cookie,请访问chrome://flags/#site-isolation-trial-opt-out,选择Opt-out。

解决chrome控制台查不到请求头的cookie
https://blog.csdn.net/qq_36838406/article/details/101943872

  1. 如果找不到fetch文件,或许在console里输入document.cookie看看会不会直接得到cookie
    在这里插入图片描述

三、Json文件的URL

原因

评论所在的json文件,是通过触发源头XHR(绝大部分动态网页相应都是XHR,返回文件都是json),找到请求地址。

如何获取

在这里插入图片描述
在这里插入图片描述

Request URL: https://m.weibo.cn/comments/hotflow?id=4485613145089303&mid=4485613145089303&max_id_type=0

分析组成

URL为Request URL: https://m.weibo.cn/comments/hotflow?id=4485613145089303&mid=4485613145089303&max_id_type=0https://m.weibo.cn/是一样的,后面有三个参数,idmidmax_id_type


四、循环调用中参数max_id,max_id_type的获取

往下到第二页

会产生一个新的hotflow文件,找到URL
在这里插入图片描述
URL为Request URL: https://m.weibo.cn/comments/hotflow?id=4485613145089303&mid=4485613145089303&max_id=146813833046003&max_id_type=0
出现了一个新参数max_id=146813833046003,回到第一页的json文件,在新页面输入其URL,并查看最下方,也有一个max_id"max_id":146813833046003
在这里插入图片描述
第二页评论中URL的"max_id"是第一页中调用的,所以第(n+1)页要调用第n页的"max_id",同理max_id_type可能为1可能为0,也是前一页传递过来的。

使chrome展示json文件

我的笔记-【mac】使用jsonview在chrome中将json层级展示
https://blog.csdn.net/weixin_43210113/article/details/107658947

使用笔记中方法后,能实现json文件的层级及中文显示。
在这里插入图片描述


五、代码讲解

编码方式
在这里插入图片描述
导包
在这里插入图片描述
设置header和cookie
在这里插入图片描述
设置一个max_id为空字段
微博评论第一页没有max_id,所以为空
在这里插入图片描述
设置循环
max_id空与非空的url不同。
解析json文件,如果得到解析状态为1为解析成功,如果为0则跳出循环。
第一页通过json文件中字典格式的调用,可以获取max_id及max_id_type。
在这里插入图片描述
获取微博评论文本(在循环内)
获取字典的列表,每一页有20条评论,在data text中,我们需要的是内容,用正则表达式来提取。
在这里插入图片描述
[“data”][“data”]
在这里插入图片描述
[‘created_at’]
在这里插入图片描述
[‘user’][‘id’]、[‘user’][‘screen_name’]
在这里插入图片描述
如果想爬楼中楼的话,再循环套下comments。
在这里插入图片描述

休眠 模拟浏览器(在循环内)
在这里插入图片描述

将文本存入文本文件(在循环内)在这里插入图片描述


六、运行测试

在这里插入图片描述
先用记事本打开,保存为ANSI的csv文件。
在这里插入图片描述
在这里插入图片描述

个人测试成功
在这里插入图片描述


©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页