我觉得我之前写的爬虫都可以抓取文字和图片。好像没写过视频这种多媒体资源。

今天我们以头条视频为例,写一个爬虫,当然是简化版,重点分析思路。

第一,爬想法

分析网页源代码,搜索并分析视频资源url以发起对url的请求,并返回二进制数据以将二进制数据保存为视频格式

以上是一个大框架,具体实现一定比以上步骤多。让我们开始示例部分。

二、头条爬虫分析

打开头条视频,刘涛上新闻了。我真的很佩服刘涛,帮老公还了4亿的债,但是有多少人一辈子赚不到1亿。。。。。。

视频主页网址http://video.eastday.com/a/170602114054589846059.html?索引

看看网页的源代码,希望能找到视频格式,比如mp4,rmvb,mov等。这里我直接搜索mp4试试。

哇,我确实找到了。这里出现的第一个mp4好像是视频URL。让我们把它复制到网址框中,并尝试这个链接

有视频,而且是我们要找的视频链接。

第三,启动代码

3.1访问视频主页,获取主页的html文件

在该部分中,请求主页的url以查看返回的数据是否包含刘涛的视频链接。

导入请求

main _ URL = ' http://video . eastday . com/a/170602114054589846059 . html?index lbt ' resp = requests . get#没有下面一行,打印结果是乱码resp . encoding = ' utf-8 ' html = resp . textprint

在打印结果中,mp4找到成功,视频链接找到,说明该部分请求代码正常。

3.2解析视频链接

我们发现mp4视频链接是在javasrcipt文本中,而不是html文本,所以不能被beautifulsoup准确定位。

在这种情况下,常规匹配是快速和准确的。

使用规则匹配,我们希望匹配规则的结果可以是唯一的。然后,在这种情况下,我先用var mp4,在网页的源代码中查找,发现它是唯一的。

接下来,我们将使用正则表达式来匹配这个链接。我们会从中吸取教训

var MP4 = "//mv . eastday . com/vyule/2017 06 02/2017 06 02114054589846059 _ 1 _ 06400360 . MP4 ";

抽出

//mv . eastday . com/vyule/2017 06 02/2017 06 02114054589846059 _ 1 _ 06400360 . MP4

我设置了一个匹配规则r' var MP4 = ""; '

3.2.1代码

Import re """findall返回匹配结果列表。因为我保证匹配的唯一性,所以这里只返回一个结果。我们需要在它后面添加一个来提取唯一的匹配结果。" link = re.findall";,html)打印

3.2.2运行结果

正常运行,返回到所需的mp4链接

3.3下载MP4视频

下载视频步骤:

转到mp4的链接,返回二进制数据,用open新建一个mp4文件f,在文件f中写入二进制数据,关闭文件f,从而下载视频。

dest _ resp = requests . get# Video是二进制数据流。内容是获取二进制数据的方法。data = dest_resp.content #保存数据的路径和文件名。path = '/Users/suosuo/Desktop/头条视频/刘涛。MP4' f =打开 f .写入f .关闭

运行结果

我给了一个不好的报告。哦,返回的原链接是这样的

//mv . eastday . com/vyule/2017 06 02/2017 06 02114054589846059 _ 1 _ 06400360 . MP4

正常链接都是这样的。

http://mv . eastday . com/vyule/2017 06 02/2017 06 02114054589846059 _ 1 _ 06400360 . MP4

链接中缺少Http协议。将代码更改为如下运行:

视频下载成功

第四,视频下载完整源代码

import requests import re main _ URL = ' http://video . eastday . com/a/170602114054589846059 . html?Index lbt' resp = requests。get #没有这一行,打印结果是乱码resp . encoding = ' utf-8 ' html = resp . text link = re . findall";,html)link = ' http:'+link dest _ resp = requests . get# video是二进制数据流。内容是获取二进制数据的方法。data = dest_resp.content #保存数据的路径和文件名。path = '/Users/suosuo/Desktop/头条视频/刘涛。MP4' f =打开 f .写入f .关闭

结束。

转载,请注明来自36大数据: 36大数据如何抓取视频资源——以头条视频为例

1.《头条视频 如何抓取视频资源-以头条视频为例》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《头条视频 如何抓取视频资源-以头条视频为例》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1668084.html