feat: add zero-argument douyin target detection
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
## Goal
|
||||
|
||||
在现有“登录浏览器后附着抓取”的基础上,扩展为支持更明确的目标选择能力,使系统不仅能抓默认博主主页,还能:
|
||||
在现有“登录浏览器后附着抓取”的基础上,扩展为支持更明确、但尽量少参数的目标选择能力,使系统不仅能抓默认博主主页,还能:
|
||||
|
||||
- 指定某个博主主页进行抓取
|
||||
- 直接抓当前浏览器里正在查看的博主主页
|
||||
@@ -24,15 +24,19 @@
|
||||
|
||||
## Target Modes
|
||||
|
||||
新版本必须同时支持以下三种目标模式:
|
||||
从实现视角看,新版本仍需同时支持以下三种目标模式;但默认用户交互应尽量自动判断,不要求用户每次显式传模式参数。
|
||||
|
||||
### 1. `creator-url`
|
||||
|
||||
用户显式传入某个博主主页 URL,系统以该博主主页为目标进行抓取。
|
||||
|
||||
### 2. `current-creator`
|
||||
### 2. `current-page`
|
||||
|
||||
系统直接读取当前已附着浏览器正在查看的页面。如果当前页面是博主主页,则以该页面为目标进行抓取。
|
||||
系统直接读取当前已附着浏览器当前活动标签页正在查看的页面:
|
||||
|
||||
- 如果当前页面是博主主页,则以该页面为目标进行抓取
|
||||
- 如果当前页面是单视频页,则按单视频方式抓取
|
||||
- 如果当前页面不是支持的抖音页面,则提示用户手动传入链接或 `aweme_id`
|
||||
|
||||
### 3. `single-video`
|
||||
|
||||
@@ -75,20 +79,33 @@
|
||||
|
||||
登录完成后,再运行抓取命令。
|
||||
|
||||
未来命令行接口应支持显式目标模式,例如:
|
||||
默认抓取命令应尽量零参数:
|
||||
|
||||
```bash
|
||||
./.venv/bin/python Douyin.py --mode creator-url --target "https://www.douyin.com/user/..."
|
||||
./.venv/bin/python Douyin.py --mode current-creator
|
||||
./.venv/bin/python Douyin.py --mode single-video --target "https://www.douyin.com/video/..."
|
||||
./.venv/bin/python Douyin.py --mode single-video --target "7619989983668240802"
|
||||
./.venv/bin/python Douyin.py
|
||||
```
|
||||
|
||||
上面只是推荐交互形态,具体参数名可在实现设计阶段微调,但必须满足以下原则:
|
||||
其推荐行为为:
|
||||
|
||||
- 模式必须显式可区分
|
||||
- “当前浏览器页面”与“传入 URL”不能混淆
|
||||
- 单视频目标与博主目标不能混淆
|
||||
- 默认附着已启动的登录浏览器
|
||||
- 默认读取当前活动标签页 URL
|
||||
- 自动判断当前页是博主主页还是单视频页
|
||||
- 若当前页不是支持页面,则报错并提示用户手动传入链接或 `aweme_id`
|
||||
|
||||
同时系统必须保留一个简单的手动兜底入口,例如单个位置参数:
|
||||
|
||||
```bash
|
||||
./.venv/bin/python Douyin.py "https://www.douyin.com/user/..."
|
||||
./.venv/bin/python Douyin.py "https://www.douyin.com/video/..."
|
||||
./.venv/bin/python Douyin.py "7619989983668240802"
|
||||
```
|
||||
|
||||
具体参数名可在实现设计阶段微调,但必须满足以下原则:
|
||||
|
||||
- 默认路径应尽量不需要复杂参数
|
||||
- “当前浏览器页面自动判断”与“手动传入目标”不能混淆
|
||||
- 单视频目标与博主目标在内部逻辑上不能混淆
|
||||
- 用户一旦需要手动兜底,输入形式应尽量简单
|
||||
|
||||
## Functional Requirements
|
||||
|
||||
@@ -102,15 +119,16 @@
|
||||
- 浏览器打开或切换到该 URL
|
||||
- 系统只抓当前页面已加载的作品
|
||||
|
||||
### Requirement B: Current Browser Creator Crawling
|
||||
### Requirement B: Current Browser Page Auto Detection
|
||||
|
||||
系统必须允许用户不手输目标 URL,而是直接抓当前浏览器页面对应的博主主页。
|
||||
系统必须允许用户不手输目标 URL,而是直接按当前已附着浏览器的活动标签页进行自动判断。
|
||||
|
||||
完成条件:
|
||||
|
||||
- 系统能读取当前浏览器页面 URL
|
||||
- 系统能读取当前浏览器活动标签页 URL
|
||||
- 若当前页面是博主主页,则正常抓取
|
||||
- 若当前页面不是博主主页,则明确报错并退出
|
||||
- 若当前页面是单视频页,则按单视频逻辑抓取
|
||||
- 若当前页面不是支持的抖音页面,则明确报错,并提示用户手动传链接或 `aweme_id`
|
||||
|
||||
### Requirement C: Single Video Download
|
||||
|
||||
@@ -138,7 +156,7 @@
|
||||
|
||||
### Current Creator Errors
|
||||
|
||||
- 当前页面不是博主主页:报错并退出
|
||||
- 当前页面不是受支持的抖音博主页或单视频页:报错并提示手动传链接或 `aweme_id`
|
||||
- 当前页面虽然像博主页,但未加载出可用作品数据:提示用户先完成页面操作后重试
|
||||
|
||||
### Single Video Errors
|
||||
@@ -195,21 +213,23 @@
|
||||
至少覆盖以下测试:
|
||||
|
||||
- `creator-url` 模式下,合法博主主页 URL 能被识别并生成正确抓取目标
|
||||
- `current-creator` 模式下,当前页面是博主主页时可抓取
|
||||
- `current-creator` 模式下,当前页面不是博主主页时明确报错
|
||||
- 默认零参数模式下,当前页面是博主主页时可抓取
|
||||
- 默认零参数模式下,当前页面是单视频页时可抓取
|
||||
- 默认零参数模式下,当前页面不是支持页面时明确报错并提示手动输入
|
||||
- `single-video` 模式支持视频 URL
|
||||
- `single-video` 模式支持 `aweme_id`
|
||||
- 创作者抓取默认只处理当前已加载内容,不自动继续翻页
|
||||
- 目标模式错误时的报错路径
|
||||
- 手动输入目标无法识别时的报错路径
|
||||
- 浏览器端口不可用时的报错路径
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
需求完成后,应满足以下验收标准:
|
||||
|
||||
1. 用户可以显式指定博主主页 URL 抓取
|
||||
2. 用户可以直接抓当前浏览器中的博主主页
|
||||
3. 用户可以指定单个视频 URL 或 `aweme_id` 下载单条视频
|
||||
1. 用户在最常见场景下可以直接执行 `./.venv/bin/python Douyin.py`
|
||||
2. 系统可以自动识别当前浏览器活动标签页是博主主页还是单视频页
|
||||
3. 用户仍可以手动指定博主主页 URL、单视频 URL 或 `aweme_id`
|
||||
4. 当目标是博主时,默认只抓当前页面已加载作品
|
||||
5. 关键失败场景都有明确报错
|
||||
6. 实现过程遵循 TDD,并有对应自动化测试覆盖
|
||||
5. 当前页面不受支持时,系统会明确提示手动传入链接或 `aweme_id`
|
||||
6. 关键失败场景都有明确报错
|
||||
7. 实现过程遵循 TDD,并有对应自动化测试覆盖
|
||||
|
||||
@@ -0,0 +1,196 @@
|
||||
# README And Beginner Guide Requirements
|
||||
|
||||
## Goal
|
||||
|
||||
为当前抖音视频爬取项目补齐两层面向用户的文档,使一个不懂代码的 Mac 用户也能按照步骤执行,并最终成功下载出抖音视频。
|
||||
|
||||
本次文档需求包含两部分:
|
||||
|
||||
- 仓库根目录的 `README.md`
|
||||
- `externaldocs/` 下的详细图文操作手册
|
||||
|
||||
本需求文档只定义文档目标、范围、结构、截图策略和约束,不直接修改实现代码。
|
||||
|
||||
## Target Audience
|
||||
|
||||
目标读者是:
|
||||
|
||||
- 使用 macOS 的用户
|
||||
- 不懂代码
|
||||
- 不熟悉 Python
|
||||
- 不熟悉虚拟环境
|
||||
- 但已经把项目放到了本地机器上
|
||||
|
||||
本次文档不负责指导用户如何 `git clone` 或下载项目源码到本地。
|
||||
|
||||
## Documentation Strategy
|
||||
|
||||
采用双层文档结构:
|
||||
|
||||
### 1. Root `README.md`
|
||||
|
||||
`README.md` 作为导航版首页,职责是:
|
||||
|
||||
- 简要说明项目是什么
|
||||
- 说明项目能做什么
|
||||
- 说明项目不能做什么
|
||||
- 告诉用户从哪里开始
|
||||
- 引导用户查看详细图文手册
|
||||
|
||||
`README.md` 不承担完整教学职责,不写成超长操作文档。
|
||||
|
||||
### 2. Detailed Guide In `externaldocs/`
|
||||
|
||||
详细图文手册作为主操作文档,职责是:
|
||||
|
||||
- 面向完全不会代码的用户
|
||||
- 从环境准备开始写
|
||||
- 一步一步带到成功下载出视频
|
||||
- 给出执行命令、预期结果和失败时的处理方式
|
||||
|
||||
## Scope
|
||||
|
||||
### Included
|
||||
|
||||
详细图文手册必须覆盖以下内容:
|
||||
|
||||
1. 项目简介
|
||||
2. 使用前准备
|
||||
3. 如何确认本机已安装 Python
|
||||
4. 如何打开终端
|
||||
5. 如何进入项目目录
|
||||
6. 如何创建或使用虚拟环境
|
||||
7. 如何安装依赖
|
||||
8. 如何启动登录浏览器
|
||||
9. 如何在浏览器中完成抖音登录和验证码
|
||||
10. 如何运行抓取命令
|
||||
11. 如何确认抓取成功
|
||||
12. 下载结果保存在哪里
|
||||
13. 常见错误及处理办法
|
||||
|
||||
### Excluded
|
||||
|
||||
本次文档明确不包含以下内容:
|
||||
|
||||
- 如何从远端拉取项目代码到本地
|
||||
- Git 基础教学
|
||||
- 任意网页抓取教学
|
||||
- 非 Mac 平台的安装说明
|
||||
- 抖音接口原理深度分析
|
||||
|
||||
## README Requirements
|
||||
|
||||
`README.md` 必须满足以下要求:
|
||||
|
||||
1. 用非技术语言介绍项目用途
|
||||
2. 明确说明这是一个“登录浏览器后附着抓取”的工具
|
||||
3. 简短说明当前项目的主要能力
|
||||
4. 简短说明当前项目的限制
|
||||
5. 提供“最快开始”入口
|
||||
6. 链接到 `externaldocs/` 下的详细图文手册
|
||||
|
||||
### Recommended README Sections
|
||||
|
||||
- 项目简介
|
||||
- 适用人群
|
||||
- 当前支持的能力
|
||||
- 快速开始
|
||||
- 详细使用说明
|
||||
- 常见注意事项
|
||||
|
||||
## Detailed Guide Requirements
|
||||
|
||||
详细图文手册必须写成严格的步骤式说明,适合完全不会代码的读者照做。
|
||||
|
||||
### Writing Style
|
||||
|
||||
- 不使用不必要术语
|
||||
- 每一步只做一件事
|
||||
- 每一步都给出要执行的命令
|
||||
- 每一步都给出“执行后应该看到什么”
|
||||
- 若这一步常见失败,则紧跟“如果失败怎么办”
|
||||
|
||||
### Required Workflow Coverage
|
||||
|
||||
详细手册必须按以下顺序组织主流程:
|
||||
|
||||
1. 确认 Python 是否已安装
|
||||
2. 打开终端
|
||||
3. 进入项目目录
|
||||
4. 创建或启用虚拟环境
|
||||
5. 安装依赖
|
||||
6. 启动登录浏览器
|
||||
7. 在浏览器中完成抖音登录
|
||||
8. 运行抓取命令
|
||||
9. 查看终端成功提示
|
||||
10. 在本地查看下载出来的 mp4 文件
|
||||
|
||||
## Screenshot Strategy
|
||||
|
||||
本次截图必须重新拍摄,不直接复用旧图。
|
||||
|
||||
### Principles
|
||||
|
||||
- 只截关键步骤
|
||||
- 每张图只服务一个步骤
|
||||
- 截图内容要与最终文档步骤严格一致
|
||||
- 优先保证“能照着做”,而不是“图多”
|
||||
|
||||
### Required Screenshot Topics
|
||||
|
||||
至少应考虑覆盖以下截图:
|
||||
|
||||
1. 项目目录结构
|
||||
2. 打开终端并进入项目目录
|
||||
3. 安装依赖命令
|
||||
4. 运行 `login_douyin.py`
|
||||
5. 浏览器登录后的状态
|
||||
6. 运行抓取命令
|
||||
7. 成功下载后的 `video/` 目录
|
||||
|
||||
### Screenshot Placement
|
||||
|
||||
- `README.md` 只放少量必要截图或不放截图
|
||||
- 主要截图集中放在详细图文手册中
|
||||
|
||||
## Success Signals In The Guide
|
||||
|
||||
文档里必须明确告诉用户如何判断是否成功,至少包括:
|
||||
|
||||
- 终端中会出现哪些关键信息
|
||||
- 抓取完成后会看到哪些成功提示
|
||||
- 本地哪个目录里能看到下载结果
|
||||
- 下载出的文件是什么格式
|
||||
|
||||
## Common Error Handling
|
||||
|
||||
详细图文手册必须包含至少以下常见错误的处理建议:
|
||||
|
||||
1. 系统找不到 `python` 或 `.venv`
|
||||
2. 依赖安装失败
|
||||
3. Chrome 调试端口未就绪
|
||||
4. 抖音登录未完成或验证码未通过
|
||||
5. 运行抓取后没有下载出视频
|
||||
6. 看不到 `video/` 目录或目录为空
|
||||
|
||||
## TDD Constraint
|
||||
|
||||
本次文档需求本身不要求用 TDD 编写文档。
|
||||
|
||||
但如果为了让文档步骤成立而需要修改代码,则后续代码改动必须遵循 TDD:
|
||||
|
||||
1. 先写失败测试
|
||||
2. 确认测试因功能未实现而失败
|
||||
3. 再写最小实现让测试通过
|
||||
4. 最后再重构
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
该需求完成后,应满足以下标准:
|
||||
|
||||
1. 仓库首页有清晰的 `README.md`
|
||||
2. `README.md` 能让用户快速理解项目并找到详细手册
|
||||
3. `externaldocs/` 下存在一份完整的面向小白的图文操作手册
|
||||
4. 一个不会代码的 Mac 用户可以按手册独立完成操作
|
||||
5. 手册能从环境准备一路带到视频下载成功
|
||||
6. 手册包含关键截图、预期结果和常见错误处理
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.2 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 432 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 145 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 621 KiB |
@@ -0,0 +1,329 @@
|
||||
# 抖音视频下载小白图文手册
|
||||
|
||||
> 适用人群:Mac 用户、项目已经在本地、不会代码也可以照着做。
|
||||
|
||||
## 这份手册能帮你做什么
|
||||
|
||||
照着这份手册执行,你可以完成下面这件事:
|
||||
|
||||
- 打开项目
|
||||
- 安装运行所需环境
|
||||
- 登录抖音
|
||||
- 启动抓取
|
||||
- 在本地找到下载好的 mp4 视频
|
||||
|
||||
## 你开始前要知道的事
|
||||
|
||||
这个项目不是“自动登录”的。
|
||||
|
||||
你需要自己在浏览器里完成:
|
||||
|
||||
- 登录抖音账号
|
||||
- 验证码
|
||||
|
||||
脚本负责做的是:
|
||||
|
||||
- 打开浏览器
|
||||
- 连接到浏览器
|
||||
- 读取当前浏览器页面里的作品数据
|
||||
- 下载视频文件
|
||||
|
||||
## 第 1 步:确认 Mac 上已经安装了 Python
|
||||
|
||||
打开“终端”应用。
|
||||
|
||||
在终端里输入下面的命令:
|
||||
|
||||
```bash
|
||||
python3 --version
|
||||
```
|
||||
|
||||
你应该看到类似这样的结果:
|
||||
|
||||
```text
|
||||
Python 3.11.0
|
||||
```
|
||||
|
||||
如果你看到了版本号,说明可以继续。
|
||||
|
||||
如果提示找不到 `python3`:
|
||||
|
||||
- 先安装 Python 3
|
||||
- 安装完成后重新执行上面的命令
|
||||
|
||||
## 第 2 步:进入项目目录
|
||||
|
||||
假设你的项目放在桌面目录下,那么在终端里输入:
|
||||
|
||||
```bash
|
||||
cd ~/Desktop/MiaoSi/Study/douyin-crawler-poc
|
||||
```
|
||||
|
||||
你也可以把上面的路径换成你自己的项目路径。
|
||||
|
||||
然后输入:
|
||||
|
||||
```bash
|
||||
pwd
|
||||
```
|
||||
|
||||
如果输出结果里能看到 `douyin-crawler-poc`,说明你已经进入了正确目录。
|
||||
|
||||
## 第 3 步:创建虚拟环境
|
||||
|
||||
在项目目录里执行:
|
||||
|
||||
```bash
|
||||
python3 -m venv .venv
|
||||
```
|
||||
|
||||
这个命令的作用是:
|
||||
|
||||
- 给当前项目准备一个独立的 Python 运行环境
|
||||
- 避免你的系统里其他 Python 包互相影响
|
||||
|
||||
如果这一步没有报错,就继续下一步。
|
||||
|
||||
## 第 4 步:激活虚拟环境
|
||||
|
||||
在终端里执行:
|
||||
|
||||
```bash
|
||||
source .venv/bin/activate
|
||||
```
|
||||
|
||||
成功后,你会看到终端左边通常多出一个类似 `.venv` 的提示。
|
||||
|
||||
如果你没有看到,也不用太紧张,只要命令没有报错,也通常可以继续。
|
||||
|
||||
## 第 5 步:安装依赖
|
||||
|
||||
在终端里执行:
|
||||
|
||||
```bash
|
||||
pip install requests DrissionPage
|
||||
```
|
||||
|
||||
如果安装成功,终端会显示若干 `Successfully installed` 或安装完成信息。
|
||||
|
||||
如果安装失败,常见处理方式:
|
||||
|
||||
- 检查网络是否可用
|
||||
- 确认前一步虚拟环境已经激活
|
||||
- 再执行一次命令
|
||||
|
||||
## 第 6 步:启动登录浏览器
|
||||
|
||||
在终端里执行:
|
||||
|
||||
```bash
|
||||
./.venv/bin/python login_douyin.py
|
||||
```
|
||||
|
||||
如果成功,你会看到类似提示:
|
||||
|
||||
```text
|
||||
[INFO] Chrome 已启动。请在打开的浏览器中完成抖音登录和验证码。
|
||||
```
|
||||
|
||||
这一步会做两件事:
|
||||
|
||||
- 打开一个新的 Chrome 浏览器窗口
|
||||
- 给后面的抓取脚本准备调试端口
|
||||
|
||||
如果这一步失败,常见原因是:
|
||||
|
||||
- Chrome 没有安装
|
||||
- 调试端口没能准备好
|
||||
|
||||
## 第 7 步:在浏览器里登录抖音
|
||||
|
||||
浏览器打开后,请你自己完成:
|
||||
|
||||
- 登录抖音账号
|
||||
- 完成验证码
|
||||
- 确认你已经进入想抓取的页面
|
||||
|
||||
这个页面可以是:
|
||||
|
||||
- 某个博主主页
|
||||
- 某个单独视频页面
|
||||
|
||||
建议此时先不要关闭这个浏览器窗口。
|
||||
|
||||
## 第 8 步:运行抓取命令
|
||||
|
||||
回到终端,执行:
|
||||
|
||||
```bash
|
||||
./.venv/bin/python Douyin.py
|
||||
```
|
||||
|
||||
这条命令的意思是:
|
||||
|
||||
- 附着到刚才打开的浏览器
|
||||
- 自动读取你当前打开的页面
|
||||
- 如果当前页是博主主页,就下载当前已加载的视频
|
||||
- 如果当前页是单视频页,就只下载这一条视频
|
||||
|
||||
如果自动判断失败,或者你不想切换浏览器页面,也可以手动传一个目标:
|
||||
|
||||
```bash
|
||||
./.venv/bin/python Douyin.py "https://www.douyin.com/user/你的博主主页"
|
||||
./.venv/bin/python Douyin.py "https://www.douyin.com/video/某个视频ID"
|
||||
./.venv/bin/python Douyin.py "7619989983668240802"
|
||||
```
|
||||
|
||||
## 第 9 步:判断是否抓取成功
|
||||
|
||||
抓取成功时,终端一般会看到类似输出:
|
||||
|
||||
```text
|
||||
[INFO] 正在处理第 1 页
|
||||
[OK] 已保存: video/某个视频标题-1234567890.mp4
|
||||
[INFO] 处理结束,共下载 18 个视频。
|
||||
```
|
||||
|
||||
如果你当前打开的是单视频页,也可能看到类似:
|
||||
|
||||
```text
|
||||
[OK] 已保存: video/某个视频标题-1234567890.mp4
|
||||
[INFO] 处理结束,共下载 1 个视频。
|
||||
```
|
||||
|
||||
其中最关键的是:
|
||||
|
||||
- 出现 `[OK] 已保存`
|
||||
- 最后一行出现 `处理结束`
|
||||
|
||||
如果看到这些内容,说明视频已经成功下载。
|
||||
|
||||
## 第 10 步:去本地查看下载好的视频
|
||||
|
||||
下载成功后,视频会保存在项目目录下的:
|
||||
|
||||
```text
|
||||
video/
|
||||
```
|
||||
|
||||
你可以用以下任一方式查看:
|
||||
|
||||
- 在 Finder 里打开项目目录,进入 `video/`
|
||||
- 在 VS Code 左侧资源管理器中打开 `video/`
|
||||
- 在终端里执行 `ls video`
|
||||
|
||||
视频文件格式是:
|
||||
|
||||
```text
|
||||
.mp4
|
||||
```
|
||||
|
||||
## 常见问题
|
||||
|
||||
### 1. 终端提示找不到 `python3`
|
||||
|
||||
说明你的 Mac 还没有安装可用的 Python 3。
|
||||
|
||||
先安装 Python 3,再重新执行:
|
||||
|
||||
```bash
|
||||
python3 --version
|
||||
```
|
||||
|
||||
### 2. 终端提示找不到 `.venv`
|
||||
|
||||
说明你还没有成功创建虚拟环境。
|
||||
|
||||
请先执行:
|
||||
|
||||
```bash
|
||||
python3 -m venv .venv
|
||||
```
|
||||
|
||||
然后再执行:
|
||||
|
||||
```bash
|
||||
source .venv/bin/activate
|
||||
```
|
||||
|
||||
### 3. 启动浏览器后提示调试端口未就绪
|
||||
|
||||
常见处理方法:
|
||||
|
||||
- 先确认 Chrome 已正常打开
|
||||
- 不要立即关闭浏览器
|
||||
- 重新运行 `login_douyin.py`
|
||||
|
||||
### 4. 运行抓取命令后提示无法连接浏览器
|
||||
|
||||
说明抓取脚本没有连上登录浏览器。
|
||||
|
||||
请按顺序重试:
|
||||
|
||||
1. 重新执行 `./.venv/bin/python login_douyin.py`
|
||||
2. 确认浏览器保持打开
|
||||
3. 再执行 `./.venv/bin/python Douyin.py`
|
||||
|
||||
### 5. 登录后还是没有下载出视频
|
||||
|
||||
可能原因:
|
||||
|
||||
- 你还没有真正登录成功
|
||||
- 验证码还没完全通过
|
||||
- 当前页面不是作品页
|
||||
- 当前页面没有加载出作品数据
|
||||
|
||||
建议:
|
||||
|
||||
- 先确认浏览器里已经能正常看到博主主页和作品
|
||||
- 再重新执行抓取命令
|
||||
|
||||
### 6. 我看不到 `video/` 文件夹
|
||||
|
||||
先在终端执行:
|
||||
|
||||
```bash
|
||||
ls video
|
||||
```
|
||||
|
||||
如果这里能看到很多 `.mp4` 文件,说明视频已经下载成功。
|
||||
|
||||
如果 VS Code 左侧看不到 `video/`,请刷新资源管理器。
|
||||
|
||||
## 建议你第一次就这样操作
|
||||
|
||||
把下面这几条命令按顺序执行:
|
||||
|
||||
```bash
|
||||
cd ~/Desktop/MiaoSi/Study/douyin-crawler-poc
|
||||
python3 -m venv .venv
|
||||
source .venv/bin/activate
|
||||
pip install requests DrissionPage
|
||||
./.venv/bin/python login_douyin.py
|
||||
./.venv/bin/python Douyin.py
|
||||
```
|
||||
|
||||
## 附:当前项目的实际工作方式
|
||||
|
||||
当前版本的逻辑是:
|
||||
|
||||
- 默认读取当前浏览器页面
|
||||
- 如果当前页是博主主页,就监听该页面的作品列表接口
|
||||
- 如果当前页是单视频页,就下载这一条视频
|
||||
- 传入链接或 `aweme_id` 时,也可以按指定目标抓取
|
||||
|
||||
所以它更适合抓:
|
||||
|
||||
- 博主主页当前页面里已经能看到的作品
|
||||
- 当前打开的单视频页面
|
||||
|
||||
而不是:
|
||||
|
||||
- 自动抓完整个博主所有历史视频
|
||||
- 抓任意网页
|
||||
|
||||
## 进一步阅读
|
||||
|
||||
- [README 首页说明](/Users/wangshaoqing/Desktop/MiaoSi/Study/douyin-crawler-poc/README.md)
|
||||
- [当前项目需求说明](/Users/wangshaoqing/Desktop/MiaoSi/Study/douyin-crawler-poc/externaldocs/2026-04-17-readme-and-beginner-guide-requirements.md)
|
||||
- [定向抓取后续需求](/Users/wangshaoqing/Desktop/MiaoSi/Study/douyin-crawler-poc/externaldocs/2026-04-17-douyin-targeted-crawling-requirements.md)
|
||||
Reference in New Issue
Block a user