xhs_video_crawler/README.md
2026-05-27 15:36:22 +08:00

101 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# xhs_video_crawler
用于探索和研究小红书视频公开内容抓取流程的项目。
## 当前能力
第一版采用和抖音参考项目类似的两步式工作流:
1. `login_xhs.py` 启动一个可见 Chrome并打开小红书发现页。
2. 你在 Chrome 中手动登录和处理验证码。
3. `XHS.py` 附着到这个 Chrome监听页面已经收到的 `feed` 响应,提取其中的 mp4 视频地址并下载。
## 项目目的
本项目用于学习和验证视频信息采集相关技术,包括请求分析、页面解析、数据结构整理、下载流程设计和后续自动化处理。
## 合规说明
请仅在合法、合规、授权的范围内使用本项目:
- 遵守小红书平台服务条款、robots 协议和相关法律法规。
- 不采集、存储或传播未授权的隐私信息。
- 不绕过平台访问控制、验证码、登录风控或反爬限制。
- 不将本项目用于批量侵权下载、商业化搬运或其他违规用途。
## 安装环境
```bash
cd /Users/wangshaoqing/Desktop/MiaoSi/Study/xhs_video_crawler
python3 -m venv .venv
source .venv/bin/activate
pip install requests DrissionPage
```
## 使用方法
### 步骤 1启动 Chrome 并手动登录
如果你已经通过抖音项目启动了调试端口为 `9223` 的 Chrome可以直接在那个 Chrome 里打开并登录小红书,不需要再运行 `login_xhs.py`
如果还没有可复用的 Chrome再运行
```bash
./.venv/bin/python login_xhs.py
```
脚本会用默认端口 `9223` 打开 `https://www.xiaohongshu.com/explore`。请在打开的浏览器里完成登录;如果出现验证码,也需要手动处理。
### 步骤 2下载发现页视频
登录完成后,保持 Chrome 不要关闭,执行:
```bash
./.venv/bin/python XHS.py --max-videos 10
```
常用参数:
```bash
# 指定下载数量
./.venv/bin/python XHS.py --max-videos 20
# 指定保存目录
./.venv/bin/python XHS.py --max-videos 10 --output-dir video
# 如果启动 Chrome 时换了端口,下载脚本也要使用同一个端口
./.venv/bin/python login_xhs.py --browser-port 9334
./.venv/bin/python XHS.py --browser-port 9334 --max-videos 10
```
下载文件默认保存到 `video/` 目录,文件名格式大致为:
```text
[作者]标题-note_id.mp4
```
## 工作原理
- 浏览器负责加载小红书页面和保留登录态。
- 脚本只监听浏览器里已经产生的网络响应。
- 解析器会递归查找响应 JSON 中的 `master_url``backup_urls` 等视频地址字段。
- 下载过程会去重,并在单个视频失败时继续处理后续视频。
## 测试
```bash
python3 -m unittest test_xhs.py test_login_xhs.py -v
```
## 后续计划
- 分析公开视频页面的数据结构。
- 提取视频标题、作者、发布时间、封面和视频地址等元数据。
- 支持按链接或关键词进行探索性抓取。
- 保存抓取结果到本地文件或结构化数据表。
- 为后续下载、去重和任务队列处理预留接口。
## 免责声明
本项目仅用于技术学习与研究。使用者应自行承担使用本项目产生的全部责任。