【爬虫软件】小红书聚合采集,含三大功能:搜索评论、主页笔记、uid转换

94 阅读6分钟

本工具仅限学术交流使用,严格遵循相关法律法规,符合平台内容的合法及合规性,禁止用于任何商业用途!

一、背景分析与结果展示

1.1 开发背景

我是 @马哥python说 ,一枚10年+程序猿,现全职独立开发。

小红书作为国内极具影响力的社区种草平台,汇聚了大量用户且拥有极高的日活跃度,其笔记数据蕴含丰富的信息价值。之前,为了满足大家不同的数据采集需求,我分别独立开发了三款软件:针对评论采集的“爬小红书搜索评论软件”、专门采集特定博主内容的“爬小红书博主软件”,还有专门转换链接uid的“小红书转换工具”。

这三款软件采集起来挺稳定、数据也全,但部分用户反馈,要是又想采评论又想采主页笔记,来回切换软件,用着有点麻烦。为了解决这个痛点,我把这三款软件整合到一起了,推出了全新的“爬小红书聚合软件v1.0”。这款软件把评论采集、达人笔记采集、uid转换这三个核心功能都包含了,提供一站式搞定的小红书数据采集方案。

主要技术栈:
功能主体由Python实现,分工如下:

tkinter:GUI软件界面 
requests:爬虫请求 
json:解析响应数据 
time:间隔等待,防止反爬 
pandas:保存csv结果 
logging:日志记录

1.2 适用人群与场景

软件适用于:

  • 获客截流:从相关行业、品牌热门作品下的评论区精准采集目标用户;
  • 数据分析:采集小红书平台数据,用于社会舆情挖掘、网络传播研究等;
  • 内容创作:分析优质博主的内容风格、热门话题,为自身创作提供参考;
  • 红薯运营:主页链接uid与小红书号的转换,需要跨工具协作的从业者。

1.3 结果展示

【功能1】采集搜索笔记和评论

采集评论界面: 采集评论界面

采集到的笔记数据:(共19个字段,含:关键词,序号,笔记id,笔记链接,笔记链接_长,头图链接,笔记类型,用户id,用户主页链接,用户昵称,点赞数,笔记标题,笔记正文,收藏数,评论数,转发数,发布时间,修改时间,IP属地) 搜索笔记.csv

采集到的评论数据:(共11个字段,含: 笔记链接,笔记链接_长,页码,评论者昵称,评论者id,评论者主页链接,评论时间,评论IP属地,评论点赞数,评论级别,评论内容) 评论.csv

自动下载搜索到的笔记图片: 搜索笔记图片

【功能2】根据主页链接采集笔记

采集主页笔记界面: 采集主页笔记页面

采集主页笔记结果:(含18个字段,含: 作者昵称,作者id,作者链接,页码,笔记标题,笔记id,笔记链接,笔记链接_长,头图链接,笔记类型,点赞数,收藏数,评论数,转发数,笔记正文,发布时间,修改时间,IP属地) 主页笔记.csv

采集到的主页笔记图片文件: 主页笔记图片

【功能3】链接与uid转换

转换功能1:主页链接转xhs号 转换功能1:主页链接转xhs号

转换功能2:xhs号转主页链接(含uid) 转换功能2:xhs号转主页链接(含uid)

转换功能3:app端作品链接转pc端作品链接 转换功能3:app端作品链接转pc端作品链接

1.4 软件说明

几点说明,请详读:

  1. Windows系统、Mac系统均可直接运行,无需配置编程环境
  2. 软件含三个核心功能:①根据关键词/笔记链接采集评论;②根据主页链接采集笔记;③uid转换
  3. 软件通过接口协议采集,并非通过模拟浏览器等RPA类,稳定性较高
  4. 软件运行完成后,会在当前文件夹(即,软件所在文件夹)生成csv结果文件
  5. 采集过程中,每采集一页,存一次csv。并非采完最后一次性保存!防止因异常中断导致丢失前面的数据(每页请求间隔1~2s,可自定义设置)
  6. 采集过程中,有log文件详细记录运行过程,方便回溯

二、主要技术

2.1 模块分工

软件全部模块采用python语言开发,主要分工如下:

tkinter:GUI软件界面
requests:发送请求
json:解析返回的响应数据
pandas:保存csv数据结果
logging:运行过程中日志记录

出于版权考虑,暂不公开源码,仅向用户提供软件使用。

2.2 部分代码

部分代码实现:

发送请求并解析数据:

# 发送请求
r = requests.get(url, headers=h1, params=params)
# 解析数据
json_data = r.json()

解析响应数据,以“评论内容”字段为例:

for c in json_data['data']['comments']:
	# 评论内容
	content = c['content']
	self.tk_show('评论内容:' + str(content))
	content_list.append(content)

保存结果数据到csv文件:

# 保存数据到DF
df = pd.DataFrame(
	{
		'笔记链接': 'https://www.xiaohongshu.com/explore/' + note_id,
		'笔记链接_长': note_url2,
		'页码': 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(self.result_file3):
	header = False
else:
	header = True
# 保存到csv
df.to_csv(self.result_file3, mode='a+', header=header, index=False, encoding='utf_8_sig')
self.tk_show('文件保存成功:' + self.result_file3)

底部版权声明:

# 版权信息
copyright = tk.Label(root, text='@马哥python说 All rights reserved.', font=('仿宋', 10), fg='grey')
copyright.place(x=290, y=625)

日志记录模块:

def get_logger(self):
    self.logger = logging.getLogger(__name__)
    # 日志格式
    formatter = '[%(asctime)s-%(filename)s][%(funcName)s-%(lineno)d]--%(message)s'
    # 日志级别
    self.logger.setLevel(logging.DEBUG)
    # 控制台日志
    sh = logging.StreamHandler()
    log_formatter = logging.Formatter(formatter, datefmt='%Y-%m-%d %H:%M:%S')
    # info日志文件名
    info_file_name = time.strftime("%Y-%m-%d") + '.log'
    # 保存到特定目录下
    case_dir = r'./logs/'
    info_handler = TimedRotatingFileHandler(filename=case_dir + info_file_name,
                                        when='MIDNIGHT',
                                        interval=1,
                                        backupCount=7,
                                        encoding='utf-8')

三、功能与使用

3.1 填写cookie

开始采集前,先把自己的cookie值填入cookie.txt文件。 cookie获取说明: cookie获取方法

然后把复制的cookie值填写到当前文件夹的cookie.txt文件中。

3.2 软件登录

用户登录界面:需要登录。

3.3 启动采集

1)登录成功之后,选择需要的功能模块(搜索笔记/博主笔记/评论);

2)设置相关参数(如关键词、时间范围、博主链接等);

3)点击「开始执行」,等待采集完成(可实时查看采集进度);

4)采集完成后,在默认的当前文件夹中查看csv数据文件或图片下载等。

3.4 演示视频

软件使用的完整过程演示视频:

mp.weixin.qq.com/s/t9cKGsgJoI9rca3I1w5RdA

END、原创声明

【爬小红书聚合软件】首发于众公号"老男孩的平凡之路",软件仅限于学术交流技术探讨,请勿用于商业用途!