青小蛙之前遇到了一个问题,要下载一部动画片以方便在没有网络的时候观看。找遍全网,发现在 cntv 有提供完整的视频,并且可以免费播放,于是拿出大神器  youtube-dl 工具下载的时候又发现,想要一次性下载 100 多集的内容,用手动的方法有些不科学,怎么办?

如何从国内视频网站中批量下载视频到本地? 1

嗯,其实有了 youtube-dl,下载是非常非常简单的,只需要使用命令行:

youtube-dl http://tv.cntv.cn/video/VSET100333776130/xxxx

就能将视频文件下载下来了。但是,就像上面这个网站,除了每页的 12 个视频地址外,还有… 10 个翻页

如何从国内视频网站中批量下载视频到本地? 2

在这里感谢 @大鱼老师 帮忙搞定的 118 集全链接。

其实青小蛙首先想到的是使用正则表达式来过滤这些 URL,但在尝试的时候发现,正则这种东西长时间不用居然…居然会忘干净!折腾了很久放弃。

在 tg 好友 @Yagami 的提醒下:「有个在线工具 extract url from text」,青小蛙茅塞顿开,继续折腾。

首先,尝试自己提取链接,总麻烦鱼老师也不是办法。从网页源代码中找到视频部分,然后稍微处理一下:

如何从国内视频网站中批量下载视频到本地? 3

将相对地址替换为绝对地址后,我们就有了粗滤的、包含视频链接的 HTML 代码。

(这里需要手动翻页 10 次,不知道有没有更好的办法)

然后,青小蛙搜索了到了两款国内可以用的从文本中提取链接的在线工具:

  • URL Extractor For Web Pages and Text
  • Link Extractor
  • 如果你知道类似服务,欢迎留言推荐

其中第一款还有过滤功能,更强大一些,青小蛙这次就用这个了。

如何从国内视频网站中批量下载视频到本地? 4

将代码复制进去,URL Extractor For Web Pages and Text 还支持从文件导入,如果有比较大量的内容需要转换的话。

然后跳过第 2 步,点击 Extract,所有的链接就排列好了,去除不需要的链接,保存为 .txt 文件,完成获取链接的任务。

如何从国内视频网站中批量下载视频到本地? 5

其实,展开第 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 进行批量下载

根据网络条件,需要一段时间下载。

下载完成后,去文件夹看一下下载情况,可能会有部分下载失败,这是只需要挑选出来重新下载就可以了。

嗯,不说了,青小蛙去看动画片了。