抖音批量下载如何做完整无水印采集:douyin-downloader 实用指南
【免费下载链接】douyin-downloaderA practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具,去水印,支持视频、图集、合集、音乐(原声)。项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader
douyin-downloader 是一个免费开源的抖音批量下载工具,面向"手动下载慢、带水印难复用、元数据拿不全"这几个常见痛点。它支持单个视频/图文/合集/音乐下载、用户主页批量下载、收藏夹抓取和无水印源优先,运行在 Python 命令行环境,配合 YAML 配置文件即可完成从安装到批量采集的全过程。
这个工具能给你留下什么
- 成目录的媒体文件:每个作品一个子目录,包含无水印 MP4(自动挑最高码率档)、封面 JPG、背景音乐 MP3,按
Downloaded/作者名/post/...的层级自动归档 - 结构化数据:每个作品旁生成
_data.json元数据(作者、描述、点赞数等),可选生成_comments.json评论文件(含二级回复),方便后续做统计或分析 - 可复跑的下载历史:内置 SQLite 数据库(
dy_downloader.db)+ 本地文件双重去重,重复运行不会重复下载;开启increase增量模式后,只抓新发布的作品
项目基于同一套后端还推出了桌面客户端 Douzy(内测中,见 README.zh-CN.md),以下截图为桌面版界面,核心下载逻辑与命令行版一致:
快速开始:从克隆到第一次下载
环境要求:Python 3.8+,Windows / macOS / Linux 均可。建议先创建虚拟环境,避免依赖冲突:
python -m venv .venv && source .venv/bin/activate # Windows 用 .venv\Scripts\activate # 克隆并安装依赖 git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt # 复制示例配置 cp config.example.yml config.yml下载用户主页需要登录态。推荐用内置的浏览器工具自动获取 Cookie(需要先pip install playwright并python -m playwright install chromium):
python -m tools.cookie_fetcher --config config.yml # 浏览器弹出后登录抖音,回终端按 Enter,Cookie 自动写入配置然后编辑config.yml,把link改成目标主页链接、number.post改成想要的首批数量,运行:
python run.py -c config.yml终端会显示 Rich 进度条,下载结果落在./Downloaded/目录下。也支持 Docker 部署(见 Dockerfile):
docker build -t douyin-downloader . docker run -v $(pwd)/config.yml:/app/config.yml -v $(pwd)/Downloaded:/app/Downloaded douyin-downloader三种最常用的用法
用法一:批量下载某作者的全部作品
输入:作者主页链接(浏览器地址栏复制的/user/xxxx完整 URL)。在配置里设置mode与number:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post # 发布作品;也可加 like(点赞) / mix(合集) / music(音乐) number: post: 0 # 0 表示全量,不限数量python run.py -c config.yml产出:Downloaded/作者名/post/日期_标题_aweme_id/下按作品分目录的媒体文件。同一作品在多个模式下出现时自动去重。
用法二:单条链接下载,不用改配置文件
视频、图文(/note/、/gallery/)、合集(/collection/)、音乐(/music/)短链都可以直接通过命令行传入,配置里的其他项作为默认值生效:
python run.py -c config.yml \ -u "https://www.douyin.com/video/7604123456789012345" \ -t 8 \ # 覆盖并发数为 8 -p ./Downloaded # 覆盖下载目录v.douyin.com短链会自动解析,无需手动还原。
用法三:只追新增内容(增量下载)
适合定期同步关注的账号。开启increase并保证database: true(增量依赖数据库记录):
increase: post: true # 已下载过的作品自动跳过,只下新发布的 database: true另外两个轻量场景:--search "关键词"按关键词搜索并导出 JSONL 到Downloaded/search/,--hot-board 30导出热搜榜快照到Downloaded/hot_board/,都只跑一条命令即可。
批量下载完成后,输出目录长这样(folderstyle: true时):
Downloaded/ ├── download_manifest.jsonl # 下载清单 └── 作者名/ ├── post/ │ └── 2024-02-07_作品标题_aweme_id/ │ ├── ...mp4 # 无水印视频 │ ├── ..._cover.jpg # 封面 │ ├── ..._music.mp3 # 背景音乐 │ └── ..._data.json # 元数据 └── like/ mix/ music/ ... # 其他模式同理关键配置项说明
以下是config.yml中最影响体验的几项,其余保持默认即可:
thread: 5 # 并发下载数,网络一般时降到 2~3 retry_times: 3 # 失败重试次数(指数退避 1s/2s/5s) proxy: "" # 代理地址,如 http://127.0.0.1:7890,无代理留空 video_quality: highest # 画质档:original 探测原片 / highest 最高转码档 / lowest 省流量 / 指定 720p 等 database: true # SQLite 去重与历史记录,增量模式依赖它 progress: quiet_logs: true # 进度阶段静默日志,减少刷屏| 配置项 | 作用 | 建议 |
|---|---|---|
thread | 并发下载线程数 | 默认 5;大量下载或网络不稳时调低 |
video_quality | 码率档位选择 | 日常用highest;需要原片用original(每条多一次探测请求) |
browser_fallback.headless | 浏览器兜底是否无头运行 | 保持false,翻页被限时需人工过验证码 |
increase.* | 各模式增量开关 | 定期同步账号时开启 |
comments.enabled | 是否采集评论 | 需要评论数据时开,max_comments控制上限 |
start_time/end_time | 时间过滤(YYYY-MM-DD) | 只抓某时间段的作品时使用 |
工具内部默认速率限制为 2 请求/秒,一般不需要额外调参。
常见问题排查
Cookie 失效,接口报登录类错误
- 现象:批量下载中途失败,或提示需要登录
- 原因:抖音登录态有时效,Cookie 过期
- 解决:重新执行
python -m tools.cookie_fetcher --config config.yml,登录后按 Enter 即可;避免短时间内反复重新登录
只能抓到 20 条左右的作品就停了
- 现象:主页作品多,但下载列表卡在 20 条附近
- 原因:翻页触发风控,接口分页被限制
- 解决:确认
browser_fallback.enabled: true且headless: false,浏览器弹窗出现后手动完成验证,不要立即关闭窗口
重新运行任务,作品却被跳过了
- 现象:想重下某个作品,程序显示已存在直接跳过
- 原因:程序同时检查数据库记录和本地文件名中的
aweme_id,两者任一命中即跳过 - 解决:删文件不够,还要清数据库记录,例如
sqlite3 dy_downloader.db "DELETE FROM aweme WHERE aweme_id = '<aweme_id>';";全部重下则连dy_downloader.db一起删
进度条刷屏,日志很难看
- 现象:终端输出大量重复的进度行
- 原因:进度阶段日志未静默
- 解决:确认
progress.quiet_logs: true;需要排查问题时再临时加-v或--show-warnings参数
写在最后
这套工具适合三类人:需要批量备份/研究某个账号内容的研究者,需要定期同步关注的博主新作品的运营,以及需要无水印素材与结构化元数据的创作者。接下来你可以:
- 克隆仓库并安装依赖,用
number.post: 1跑一次单条下载验证环境 - 用
tools.cookie_fetcher获取 Cookie,把number.post调大正式批量下载 - 打开
increase.post: true,配置定时任务做周期性增量同步
请仅将本工具用于个人学习、研究与个人数据管理,尊重创作者版权,不要用于侵犯他人合法权益的用途。
【免费下载链接】douyin-downloaderA practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具,去水印,支持视频、图集、合集、音乐(原声)。项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考