1. 项目背景与核心需求
去年帮朋友做市场调研时,发现需要批量采集小红书平台数据,但市面上工具要么收费昂贵,要么功能单一。于是决定用Python开发一个轻量级的GUI采集工具,这就是xhs_one_spider的由来。这个工具主要解决三个痛点:
- 聚合多维度数据采集(笔记内容、用户信息、互动数据)
- 可视化操作降低技术门槛
- 支持定制化采集规则
目前最新版已经实现了单账号日均5000+条数据的稳定采集,通过合理的反爬策略可以长期使用。下面具体分享开发过程中的关键技术方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 整体技术栈选择
采用前后端分离架构:
- 前端:PyQt5(兼容性好,组件丰富)
- 后端:Requests+Playwright双引擎
- 数据存储:SQLite(轻量)+CSV双模式
- 反爬方案:IP轮询+请求指纹混淆
注意:Playwright主要用来处理动态渲染内容,常规静态页面用Requests更高效
2.2 核心模块设计
mermaid复制graph TD
A[GUI界面] --> B[任务配置]
B --> C[爬虫引擎]
C --> D[数据清洗]
D --> E[存储输出]
E --> F[可视化报表]
3. 关键实现细节
3.1 小红书接口逆向分析
通过抓包发现主要接口:
- 笔记详情:/api/sns/web/v1/feed
- 用户信息:/api/sns/web/v1/user
- 搜索接口:/api/sns/web/v1/search
接口关键参数:
python复制headers = {
"x-sign": dynamic_signature,
"cookie": "web_session=xxx"
}
params = {
"source": "notes",
"page_size": 20,
"page": page_num
}
3.2 反爬应对策略
实测有效的方案组合:
- 请求间隔随机化(2-5秒)
- 动态生成x-sign签名
- 轮换User-Agent池
- 重要操作模拟鼠标轨迹
踩坑记录:固定时间间隔请求容易被封,建议加入随机滚
