最新动态
【爬虫实战】用Python采集任意小红书笔记下的评论,爬了10000多条,含二级评论!
2024-10-31 20:48

您好!我是@马哥python说 ,一名10年程序猿。

【爬虫实战】用Python采集任意小红书笔记下的评论,爬了10000多条,含二级评论!

我们继续分享Python爬虫的案例,今天爬取小红书上指定笔记("巴勒斯坦"相关笔记)下的评论数据。

老规矩,先展示结果:
截图1:

截图1
截图2:
截图2
截图3:
截图3

共爬取了1w多条"巴勒斯坦"相关评论,每条评论含10个关键字段,包括:

笔记链接, 页码, 评论者昵称, 评论者id, 评论者主页链接, 评论时间, 评论IP属地, 评论点赞数, 评论级别, 评论内容。

其中,评论级别包括:根评论、二级评论及二级展开评论。

任意打开一个小红书笔记的评论,打开浏览器的开发者模式,网络,XHR,找到目标链接的预览数据,如下:
开发者模式

由此便得到了前端请求链接,下面开始开发爬虫代码。

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

定义一个请求头:

经过我的实际测试,请求头包含User-Agent和cookie这两项,即可实现爬取。
其中,cookie很关键,需要定期更换。那么cookie从哪里获得呢?方法如下:

获取cookie方法

下面,开发翻页逻辑。

由于我并不知道一共有多少页,往下翻多少次,所以采用while循环,直到触发终止条件,循环才结束。

那么怎么定义终止条件呢?我注意到,在返回数据里有一个叫做"has_more"的参数,大胆猜测它的含义,是否有更多数据,正常情况它的值是true。如果它的值是false,代表没有更多数据了,即到达最后一页了,也就该终止循环了。

因此,核心代码结构应该是这样(以下是伪代码,主要是表达逻辑,请勿直接copy):

另外,还有一个关键问题,如何进行翻页。

查看请求参数,如下:
请求参数中的cursor
这里的游标,就是向下翻页的依据,因为每次请求的返回数据中,也有一个cursor:
返回数据中的cursor

大胆猜测,返回数据中的cursor,就是给下一页请求用的cursor,所以,这部分的逻辑实现应该如下(以下是伪代码,主要是表达逻辑,请勿直接copy):

另外,我在第一章节提到,还爬到了二级评论及二级展开评论,怎么做到的呢?
经过分析,返回数据中有个节点sub_comment_count代表子评论数量,如果大于0代表该评论有子评论,进而可以从sub_comments节点中爬取二级评论。

其中,二级展开评论,请求参数中的root_comment_id代表父评论的id,其他逻辑同理,不再赘述。

最后,是顺理成章的保存csv数据:

至此,爬虫代码开发完毕。

完整代码中,还包含转换时间戳、随机等待时长、解析其他字段、保存Dataframe数据、多个笔记同时循环爬取等关键逻辑,详见演示视频。

代码演示:【Python爬虫】用python爬了10000条小红书评论,以#巴勒斯坦#为例
    以上就是本篇文章【【爬虫实战】用Python采集任意小红书笔记下的评论,爬了10000多条,含二级评论!】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/quote/2281.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多