在日常浏览知乎的时候,我们可以看到很多问题的回答里面附带了高质量的视频短片。
但是,在网页上的视频短片只能在浏览网页的时候观看,如果断网了,或者在无网的环境下可能就无法观看了。
并且,有的短片做的挺好的,你会想要下载收藏。

因此,爬取知乎上的视频到本地,便成了一个【刚需】。

我会用两个文章描述如何实现这个刚需的方法与步骤详情,总的来说有两部分:
1. 手动篇 | 需要人工的一步步的从网页到最后抓取视频
2. 自动篇 | 我会发布自己编写的Python脚本,以及该脚本的使用方式与使用时的表现,并附上源码;基本上在自动篇阶段,你只需要给脚本你需要解析的目标网页的URL链接,以及要在本地保存的位置,程序代码会自动的帮你完成在【手动篇】中需要人工干预的一系列工作

本文是【手动篇】。

下面开始。
————————————————————————————————

首先,确定好我们的目标。
我们会以这篇知乎上的问题为例子,讲述如何爬取视频:

看似麻烦其实很简单的化妆知识 | https://www.zhihu.com/question/306126586/answer/607889154

一、浏览器:开发者模式
打开:开发者模式
快捷键【F12】可以打开【开发者模式】

如上,
在Source中,可以看到整个网页的资源资源情况。

其中:
一串数字的部分(上面截图中已经红框高亮)就是我们网页中视频资源的位置了。
(注意)如果一个网页上有多个视频,上面的数字特征的资源也会有多个,并且数字的编号会在页面范围内唯一。

在视频资源下可以看到:【v.vzuu.com】
该网站是【知乎】的视频服务的独立域名
直接访问该域名,你会什么都看不到,如下:

该地址是知乎应用本身使用的,不对终端用户开放。

回到视频抓取的话题。
在上面数字部分的下级目录中可以看到【video】的部分,该部分更详细的内容,如下:

你可以看到,每个视频其实是有个单独的播放页面的:【https://v.vzuu.com/video/1083372647425028096?autoplay=false&useMSE=】。
而平常我们浏览某个知乎上的问题的时候,其实播放画面是被嵌入到内容之中的。

浏览下这个单独的页面:
https://v.vzuu.com/video/1083372647425028096?autoplay=false&useMSE=

还是和上面一样,打开【开发者工具】,来分析下这个单独的视频页面。
刷新一下页面,你可以观察到从刷新开始,到最后加载,到点击播放后,整个页面资源的变化:

刷新页面(还未播放,知乎的视频默认不是自动播放的,需要用户自己点击播放才会播放)

如上,Network的部分,需要注意几个资源的情况。
主要关注,在域名vzuu.com下的资源:

可以看到,其中有个资源的HTTP状态码返回的是【206】

在HTTP中状态码【206】表示的意义是:
HTTP/1.1 206:
客户端通过发送范围请求头Range抓取到了资源的部分数据。

而【206】适用的场景一般是:
1. 解决大文件下载问题
2. 解决CDN和原始HTTP服务器问题
3. 使用工具例如lftp,wget,telnet测试断电续传

延伸:
【HTTP 2xx】表示【客户端发送的请求已经被服务器接受并且被成功处理了】

因此,在我们的这个场景中,我们需要下载视频,我们要找的资源,就是这个【206】状态码对应的资源。

具体看看:
开始播放前:

请注意,这里的【Request URL:https://vdn1.vzuu.com/SD/b32f5fec-38c6-11e9-af5e-0a580a409ad7.mp4?disable_local_cache=1&bu=com&expiration=1554007175&auth_key=1554007175-0-0-3fb01141f7e2a9ddf223a39a3a89cbf8&f=mp4&v=hw】

开始播放后:
又加载了很多资源,会随着视频的进度条,慢慢变多。


请注意,这里的【Request URL:https://vdn1.vzuu.com/SD/b32f5fec-38c6-11e9-af5e-0a580a409ad7.mp4?disable_local_cache=1&bu=com&expiration=1554007175&auth_key=1554007175-0-0-3fb01141f7e2a9ddf223a39a3a89cbf8&f=mp4&v=hw】

如上,通过具体查看资源属性,你会发现:
1. 有的Request URL中包含了【mp4】的字段
2. 有的没有

我们主要关注这些包含了【mp4】字段的【Request URL】
它们就是我们要找的下载链接。

上面我们看到了两个:
1. URL:https://vdn1.vzuu.com/SD/b32f5fec-38c6-11e9-af5e-0a580a409ad7.mp4?disable_local_cache=1&bu=com&expiration=1554007175&auth_key=1554007175-0-0-3fb01141f7e2a9ddf223a39a3a89cbf8&f=mp4&v=hw
2. URL:https://vdn1.vzuu.com/SD/b32f5fec-38c6-11e9-af5e-0a580a409ad7.mp4?disable_local_cache=1&bu=com&expiration=1554007175&auth_key=1554007175-0-0-3fb01141f7e2a9ddf223a39a3a89cbf8&f=mp4&v=hw

可以看到,虽然有的资源请求是后发生的,资源ID(那一串数字)不同,但是请求的地址却是一样的。

通过迅雷等工具下载这个URL即可:

你会发现,你复制了这个地址后,迅雷的剪切板的侦测功能自动识别到了该URL对应的下载文件名【b32f5fec-38c6-11e9-af5e-0a580a409ad7.mp4】

最后,下载成功。

二、本地播放下载的资源

可以看到,已经将视频下载到了本地,并且可以成功被播放。

——————————
Done。

1
说点什么

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
0 Comment authors
Recent comment authors

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  Subscribe  
提醒
trackback

[…] 如何从【知乎】上爬取视频到本地 | 手动篇 […]