抓取网页视频(爬取、安装Python的扩展包(2.7.1364位python) )
优采云 发布时间: 2022-03-26 16:15抓取网页视频(爬取、安装Python的扩展包(2.7.1364位python)
)
爬取视频网站的视频URL
前言
最近,我需要为我的工作抓取视频网址。在网上找了很多资料,绕了一大圈终于得到了。写这篇博客是为了自己以后的观看,或者有这个需求的程序员参考。我们平时在网上看电影的时候,我们的浏览器每隔一小段时间就会加载一个小视频,这样我们就可以连续观看一个完整的视频。言外之意就是视频网站会将视频分割后发送给客户端,所以我们可以通过网卡抓包的方式来捕获发给视频网站的HTTP请求包。提取发送到视频网站的url,最后我们结合每个小段的视频url,就可以得到完整的视频。
第一步,安装Python(2.7.13 64-bit)
Python下载地址:
python的安装步骤我就不说了,大家应该都知道吧。
第二步,安装Python扩展包pypcapy==1.1.2
我这里试过了,最新版本有问题,最好用老版本。
pip install pypcap==1.1.2 安装时会出现如下问题,会提示vc++ 9.0 没有安装。
微软为python2提供了vc++库,但没有python3,这就是我们选择python2的原因,下载VCForPython27.msi
下载链接:
下载完成后,点击下一步进行安装。
VC++安装完成后,pip install pypcap==1.1.2,然后我们会遇到新的错误说找不到pcap.h,这时我们需要下载winpcap开发包。
Winpcap开发者版下载地址:
winpcap下载后,接下来的两步非常关键,一定要仔细阅读(前两步是安装pcapy必备的,python的另一个扩展包,前两步安装pypcap可以省略)。接下来继续安装,显示安装成功!如果安装的是下载的压缩包python setup.py install,安装成功后,找到包的路径,将pypcap包的位置添加到环境变量中。
安装成功后,我们进入python模式试一试。以为搞定了,但是还是出现找不到DLL的错误。这时候,我们需要安装WinPcap。我们只是用了WinPcap开发包,还没有安装WinPcap工具。
WinPcap下载地址:
安装完WinPcap,终于结束了!在这里辛苦了,因为我在网上找不到所有的资料,而且百度出来的都是乱七八糟的,所以我晚上2点才睡觉。. .
第三步,安装Python扩展包dpkt(这个没什么特别的,直接安装就行了)
第四步,运行如下代码,打开浏览器观看视频。
#encoding: utf8
import pcap
import dpkt
import re
pc=pcap.pcap() #注,参数可为网卡名,如eth0, 设置*敏*感*词*过滤器 HTTP请求的TCP头为GET 或者 HTTP, pc.setfilter('tcp[20:2]=0x4745 or tcp[20:2]=0x4854')
pc.setfilter('tcp port 80')
print u"程序开始运行"
while True:
for ptime,pdata in pc: #ptime为收到时间,pdata为收到数据
try:
p=dpkt.ethernet.Ethernet(pdata) #对抓到的以太网V2数据包(raw packet)进行解包
except Exception, e:
continue
if p.data.__class__.__name__=='IP':
if p.data.data.__class__.__name__=='TCP': # if p.data.data.dport==80:
header = p.data.data.data # 抓到的请求头, 默认按照抓到正常的请求头来解析,如果解析报错则舍弃,继续抓包
try:
headerArr = header.split('\r\n')
url = headerArr[0].split(' ')[1]
host = headerArr[1].split(' ')[1]
requestUrl = host + url
domain_regex = r'^([a-zA-Z0-9]([a-zA-Z0-9-_]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,11}[/].*'
result = re.search(domain_regex, requestUrl)
if result:
print requestUrl
# print requestUrl
except Exception, e:
continue
第五步,打开浏览器开发者网络,可以观察到我们的程序已经抓取到了视频的url