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

这篇具有很好参考价值的文章主要介绍了【爬虫实战】用Python采集任意小红书笔记下的评论,爬了10000多条,含二级评论!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 一、爬取目标
  • 二、爬虫代码讲解
    • 2.1 分析过程
    • 2.2 爬虫代码
  • 三、演示视频
  • 四、获取完整源码

一、爬取目标

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

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

老规矩,先展示结果:

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

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

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

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

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

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

二、爬虫代码讲解

2.1 分析过程

任意打开一个小红书笔记的评论,打开浏览器的开发者模式,网络,XHR,找到目标链接的预览数据,如下:
【爬虫实战】用Python采集任意小红书笔记下的评论,爬了10000多条,含二级评论!

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

2.2 爬虫代码

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

import requests
from time import sleep
import pandas as pd
import os
import time
import datetime
import random

定义一个请求头:

# 请求头
h1 = {
	'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
	# cookie需定期更换
	'Cookie': '换成自己的cookie值',
}

经过我的实际测试,请求头包含User-Agent和Cookie这两项,即可实现爬取。
其中,Cookie很关键,需要定期更换。那么Cookie从哪里获得呢?方法如下:
【爬虫实战】用Python采集任意小红书笔记下的评论,爬了10000多条,含二级评论!

下面,开发翻页逻辑。

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

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

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

while True:
	# 发送请求
	r = requests.get(url, headers=h1)
	# 解析数据
	json_data = r.json()
	# 逐条解析
	for c in json_data['data']['comments']:
		# 评论内容
		content = c['content']
		content_list.append(content)
	# 保存数据到csv
	。。。
	# 判断终止条件
	next_cursor = json_data['data']['cursor']
	if not json_data['data']['has_more']:
		print('没有下一页了,终止循环!')
		break
	page += 1

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

查看请求参数,如下:
【爬虫实战】用Python采集任意小红书笔记下的评论,爬了10000多条,含二级评论!

这里的游标,就是向下翻页的依据,因为每次请求的返回数据中,也有一个cursor:
【爬虫实战】用Python采集任意小红书笔记下的评论,爬了10000多条,含二级评论!

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

while True:
	if page == 1:
		url = 'https://edith.xiaohongshu.com/api/sns/web/v2/comment/page?note_id={}&top_comment_id=&image_scenes=FD_WM_WEBP,CRD_WM_WEBP'.format(
			note_id)
	else:
		url = 'https://edith.xiaohongshu.com/api/sns/web/v2/comment/page?note_id={}&top_comment_id=&image_scenes=FD_WM_WEBP,CRD_WM_WEBP&cursor={}'.format(
			note_id, next_cursor)
	# 发送请求
	r = requests.get(url, headers=h1)
	# 解析数据
	json_data = r.json()
	# 得到下一页的游标
	next_cursor = json_data['data']['cursor']

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

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

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

# 保存数据到DF
df = pd.DataFrame(
	{
		'笔记链接': 'https://www.xiaohongshu.com/explore/' + note_id,
		'页码': page,
		'评论者昵称': nickname_list,
		'评论者id': user_id_list,
		'评论者主页链接': user_link_list,
		'评论时间': create_time_list,
		'评论IP属地': ip_list,
		'评论点赞数': like_count_list,
		'评论级别': comment_level_list,
		'评论内容': content_list,
	}
)
# 设置csv文件表头
if os.path.exists(result_file):
	header = False
else:
	header = True
# 保存到csv
df.to_csv(result_file, mode='a+', header=header, index=False, encoding='utf_8_sig')

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

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

三、演示视频

代码演示:【Python爬虫】用python爬了10000条小红书评论,以#巴勒斯坦#为例

四、获取完整源码

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


我是@马哥python说,一名10年程序猿,持续分享python干货中!文章来源地址https://www.toymoban.com/news/detail-735842.html

到了这里,关于【爬虫实战】用Python采集任意小红书笔记下的评论,爬了10000多条,含二级评论!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Python爬取小红书笔记与评论(仅供学习交流)

    【作者主页】: 吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建

    2024年01月16日
    浏览(46)
  • 【爬虫GUI】YouTube评论采集软件,突破反爬,可无限爬取!

    目录 一、背景介绍 1.1 软件说明 1.2 效果演示 二、科普知识 2.1 关于视频id 2.2 关于评论时间 三、爬虫代码 3.1 界面模块 3.2 爬虫模块 3.3 日志模块 四、获取源码及软件 你好,我是@马哥python说 ,一名10年程序猿。 最近我用python开发了一个GUI桌面软件,作用是爬取YouTube指定视频

    2024年02月11日
    浏览(36)
  • 【爬虫实战】用python爬取微博任意关键词搜索结果、exe文件

    项目功能简介: 1.交互式配置; 2.两种任意来源(直接输入、本地文件); 3.自动翻页(无限爬取); 4.指定最大翻页页码; 5.数据保存到csv文件; 6.程序支持打包成exe文件; 7.项目操作说明文档; 一.最终效果 视频演示: 用python爬取微博搜索结果、exe文件

    2024年02月02日
    浏览(64)
  • Python爬虫实战:自动化数据采集与分析

    在大数据时代,数据采集与分析已经成为了许多行业的核心竞争力。Python作为一门广泛应用的编程语言,拥有丰富的爬虫库,使得我们能够轻松实现自动化数据采集与分析。本文将通过一个简单的示例,带您了解如何使用Python进行爬虫实战。 一、环境准备 首先,确保您已经

    2024年02月11日
    浏览(47)
  • 微信小程序,Python爬虫抓包采集实战,采集某成考题库小程序

    从本篇博客开始,我们会针对微信小程序编写一系列的爬虫,这些爬虫依旧通过案例进行串联,保证对大家的学习有所帮助。 正式开始前先准备工具,一个可以解析 https 协议请求的软件 fiddler ,电脑版微信。 由于在 2022 年 5 月份,微信调整了其小程序架构,所以在正式开始

    2024年02月09日
    浏览(41)
  • 微博数据采集,微博爬虫,微博网页解析,完整代码(主体内容+评论内容)

    参加新闻比赛,需要获取大众对某一方面的态度信息,因此选择微博作为信息收集的一部分 微博主体内容 微博评论内容 一级评论内容 二级评论内容 以华为发布会这一热搜为例子,我们可以通过开发者模式得到信息基本都包含在下面的 div tag中 我们通过网络这一模块进行解

    2024年03月14日
    浏览(43)
  • 【xhs爬虫软件】把小红书博主发布笔记API接口user_posted接口封装成GUI采集工具!

    用Python开发的爬虫采集软件,可自动抓取小红书博主的已发布笔记。 小红书的已发布笔记接口URL: 开发者模式分析过程: 进而封装成GUI界面软件,如下: 软件效果: 采集结果: 演示视频: https://www.bilibili.com/video/BV1Zy421z74a 详细讲解文章: 【GUI软件】小红书指定博主批量采

    2024年04月27日
    浏览(39)
  • Python爬虫实战:IP代理池助你突破限制,高效采集数据

    当今互联网环境中,为了应对反爬虫、匿名访问或绕过某些地域限制等需求,IP代理池成为了一种常用的解决方案。IP代理池是一个包含多个可用代理IP地址的集合,可以通过该代理池随机选择可用IP地址来进行网络请求。 IP代理池是一组可用的代理IP地址,可以用来隐藏用户的

    2024年01月21日
    浏览(52)
  • 爬虫实战 - 微博评论数据可视化

    我们都知道在数据比较少的情况下,我们是可以很轻易的获取到数据中的信息。但是当数据比较庞大的时候呢,我们就很难看出来了。尤其是面对现如今数以万计的数据,就更了。 不过好在我们可以通过计算机来帮我们进行分析,其中比较高效的手段便是数据可视化了。通过

    2024年02月03日
    浏览(34)
  • 你评论,我赠书~【哈士奇赠书 - 12期】-〖爬虫逆向进阶实战〗参与评论,即可有机获得

    大家好,我是 哈士奇 ,一位工作了十年的\\\"技术混子\\\", 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 🔥 如果感

    2024年02月03日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包