抖音批量下载教程:3 步跑通去水印下载与主页全量抓取
【免费下载链接】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 是一个开源的抖音内容下载工具,支持视频、图文、合集、音乐(原声)的单个下载和作者主页批量抓取,自带去水印、进度条、失败重试和 SQLite 去重。适合想批量保存抖音内容、又不想逐个手动点击保存的用户。
手动保存的麻烦,批量下载是怎么解决的
遇到想收藏的博主,你大概率会经历这样一遍操作:点开主页,逐个视频点"保存",再在相册里翻出来一个个存到文件夹,几十个作品下来就够喝一壶。更麻烦的是图文、合集这些类型,手动方式基本没法高效处理。
douyin-downloader 的思路是"链接进、文件夹出":把视频链接或主页链接写进配置文件,工具负责翻页解析、下载媒体、按作者和模式分目录落盘,重复内容靠数据库自动跳过。整个过程不需要人工盯着,跑完直接得到结构化的本地档案。
不同内容类型,各对应一个下载场景
- 单个视频:拿到
/video/{aweme_id}链接直接下载,自动挑选无水印源,并根据video.bit_rate选出最高码率版本,画质尽量给满。 - 图文作品:
/note/或/gallery/链接会被识别为图集,逐张保存,不用单独处理图片序列。 - 合集内容:
/collection/{mix_id}链接会展开成整条合集,配合主页的mix模式可以批量拉取作者的全部合集。 - 音乐原声:
/music/{music_id}优先下载原声文件,原声缺失时回退到该音乐下的首条作品,适合存 BGM。 - 主页批量:
/user/{sec_uid}链接配合mode参数,可分别拉取作品(post)、点赞(like)、合集(mix)、音乐(music);短链v.douyin.com也能直接丢进去自动解析。 - 收藏夹同步:登录态 Cookie 对应的账号收藏夹,用
collect/collectmix模式可整体下载(这两个模式需单独使用,不能和其他模式混跑)。
下载过程还有几层保障:默认 5 线程并发、指数退避重试、速率限制避免请求过快,翻页被风控卡住时可以自动唤起浏览器兜底、人工过一遍验证码。相关实现分别在 core/(下载逻辑)、control/(并发与重试)、storage/(数据库去重)。
快速跑通:从克隆到开始下载
准备:拉代码装依赖
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader pip install -r requirements.txt克隆仓库后装好 Python 依赖,Python 3.8 及以上均可。需要浏览器兜底或自动获取 Cookie 的话,再补一句pip install playwright && python -m playwright install chromium。
配置:复制示例配置并获取 Cookie
cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml先复制一份 示例配置 作为自己的config.yml;然后运行 Cookie 获取脚本,弹出的浏览器里登录抖音后回到终端按 Enter,Cookie 会自动写回配置文件,这一步是后续主页批量下载能翻页的关键。
执行:一条命令开始任务
python run.py -c config.yml配置文件里填好link(视频或主页链接)、path(保存目录)和mode(下载模式)即可开跑。也可以临时追加链接覆盖配置,比如python run.py -c config.yml -u "https://www.douyin.com/video/7604129988555574538" -t 8,其中-t指定并发数、-p指定下载目录。
跑完之后,本地得到的是什么
下载产物按"作者名 → 模式 → 单作品子目录"三层组织,folderstyle: true(默认)时每个作品一个独立文件夹,里面包含视频本体、封面、原声、元数据 JSON,开启评论采集时还有*_comments.json:
Downloaded/ ├── download_manifest.jsonl └── 作者名/ ├── post/ │ └── 2024-02-07_作品标题_aweme_id/ │ ├── ...mp4 │ ├── ..._cover.jpg │ ├── ..._music.mp3 │ └── ..._data.json ├── mix/ └── music/根目录的dy_downloader.db记录下载历史,是增量下载和跨模式去重的依据:同一个作品在 post、like、music 多种模式下出现时不会重复落盘。常用参数速查:
| 配置项 | 作用 | 典型值 |
|---|---|---|
mode | 主页下载模式 | post/like/mix/music,收藏夹用collect/collectmix |
number.post等 | 各模式数量上限,0为不限 | 50 |
increase.post | 增量开关,只拉新作品 | true(依赖database: true) |
start_time/end_time | 时间范围过滤 | YYYY-MM-DD |
thread | 并发线程数 | 5 |
browser_fallback.enabled | 翻页受限时浏览器兜底 | true |
progress.quiet_logs | 进度阶段静默日志 | true |
不想手写配置的话,项目还带了--hot-board(热搜榜导出)和--search(关键词搜索)这类命令行入口,以及可选的 REST 服务模式(--serve),详见 cli/main.py 的参数解析。
避坑指南
- 只抓到 20 条就停:大概率是翻页触发风控。保持
browser_fallback.enabled: true且headless: false,浏览器弹出后手动完成验证再让程序继续。 - Cookie 过期导致请求失败:重跑一次
python -m tools.cookie_fetcher --config config.yml刷新即可,登录态失效是常态。 - 想重下某条作品:程序是"数据库 + 本地文件"双重去重,删文件不删库或删库不删文件都可能不触发重下,两边要一起清(
dy_downloader.db里的aweme表)。 - 终端刷屏严重:确认
progress.quiet_logs: true;确需看日志时再加--show-warnings或-v,平时别开。
3 条命令完成配置到下载,主页内容按目录自动归档。把常用主页链接填进config.yml,跑一次python run.py -c config.yml试试。
【免费下载链接】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),仅供参考