抓取网页视频(爬取、安装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

  

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线