如何从国内视频网站中批量下载视频到本地?
青小蛙之前遇到了一个问题,要下载一部动画片以方便在没有网络的时候观看。找遍全网,发现在 cntv 有提供完整的视频,并且可以免费播放,于是拿出大神器 youtube-dl 工具下载的时候又发现,想要一次性下载 100 多集的内容,用手动的方法有些不科学,怎么办?
嗯,其实有了 youtube-dl,下载是非常非常简单的,只需要使用命令行:
youtube-dl http://tv.cntv.cn/video/VSET100333776130/xxxx
就能将视频文件下载下来了。但是,就像上面这个网站,除了每页的 12 个视频地址外,还有… 10 个翻页
在这里感谢 @大鱼老师 帮忙搞定的 118 集全链接。
其实青小蛙首先想到的是使用正则表达式来过滤这些 URL,但在尝试的时候发现,正则这种东西长时间不用居然…居然会忘干净!折腾了很久放弃。
在 tg 好友 @Yagami 的提醒下:「有个在线工具 extract url from text」,青小蛙茅塞顿开,继续折腾。
首先,尝试自己提取链接,总麻烦鱼老师也不是办法。从网页源代码中找到视频部分,然后稍微处理一下:
将相对地址替换为绝对地址后,我们就有了粗滤的、包含视频链接的 HTML 代码。
(这里需要手动翻页 10 次,不知道有没有更好的办法)
然后,青小蛙搜索了到了两款国内可以用的从文本中提取链接的在线工具:
- URL Extractor For Web Pages and Text
- Link Extractor
- 如果你知道类似服务,欢迎留言推荐
其中第一款还有过滤功能,更强大一些,青小蛙这次就用这个了。
将代码复制进去,URL Extractor For Web Pages and Text 还支持从文件导入,如果有比较大量的内容需要转换的话。
然后跳过第 2 步,点击 Extract,所有的链接就排列好了,去除不需要的链接,保存为 .txt 文件,完成获取链接的任务。
其实,展开第 2 步,是可以直接过滤需要的链接的,在 Only show URLs of these social media sites: 里输入 cntv.cn 就可以了。不过这里默认获得的地址非常规整,也就无所谓了。
最后,使用 youtube-dl 批量下载:
youtube-dl -c -i -a cntv.txt
解释一下:
- -c 断点续传
- -i 跳过错误继续下载
- -a cntv.txt 从这个 txt 文件中获取 URLs 进行批量下载
根据网络条件,需要一段时间下载。
下载完成后,去文件夹看一下下载情况,可能会有部分下载失败,这是只需要挑选出来重新下载就可以了。
嗯,不说了,青小蛙去看动画片了。