【技术分享】xhs_one_spider: 用python开发一站式小红书数据聚合采集软件
开发初衷 小红书作为国内头部的社区种草平台,其海量笔记数据蕴含着极高的商业与学术价值。此前,为了满足不同场景的采集需求,我曾分别开发了针对评论、博主主页以及UID转换的三款独立工具。然而,许多用户反馈在处理复杂任务(如同时采集评论和主页笔记)时,频繁切换软件带来了操作上的不便。 为了解决这一痛点,我将上述三个核心模块进行了深度融合,推出了全新的 “爬小红书聚合软件v1.0”。这是一款集成了“评论采集”、“达人笔记采集”及“UID转换”的一体化数据解决方案。 适用场景 本工具严格遵循相关法律法规,仅限于学术交流与合规性研究,具体适用场景包括: 本软件完全由 Python 语言独立开发,采用模块化设计以保证高效运行与维护。 核心模块分工 核心代码实现 以下是软件中处理数据请求与保存的关键代码片段: 发送请求与解析: 数据解析示例(评论内容): 数据保存至CSV: 采用logging模块记录日志运行过程,方便debug回溯场景: 本软件通过接口协议进行数据交互,相比模拟浏览器(RPA)具有更高的稳定性。采集过程中,系统会实时(每页请求间隔1~2s)将数据存入CSV文件,有效防止因网络异常导致的数据丢失。 功能一:搜索笔记与评论采集 该模块支持根据关键词或笔记链接采集评论区数据。 功能二:博主主页笔记采集 支持根据博主主页链接批量抓取其发布的历史笔记。 功能三:UID与链接转换工具 提供高频使用的转换功能,无需打开网页即可完成: 前置准备 操作流程 为了方便用户上手,附带了完整的操作演示视频: 本软件及文章均为本人独立原创开发与编写。请尊重原创成果,严禁任何形式的二创、转载或盗发,违者必究!本工具仅限学术交流使用,严格遵循相关法律法规,符合平台内容的合法及合规性,禁止用于任何商业用途!
1. 项目背景与核心功能整合
2. 技术架构与实现逻辑
序号 模块名称 功能描述 1 tkinter构建GUI图形用户界面 2 requests负责发送HTTP请求 3 json解析服务器返回的响应数据 4 pandas处理并保存为CSV数据结果 5 logging记录运行日志,便于异常回溯 # 发送请求
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)# 保存数据到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)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. 功能详解与数据产出



4. 使用指南
5.演示视频
mp.weixin.qq.com/s/t9cKGsgJoI9rca3I1w5RdA
END. 版权声明