Python网络爬虫完成vip电影下载

网络爬虫目地

完成对各种视频平台vip电影的下载 ,由于第三方解析网站并沒有出示下载的方式,因而要想完成电影的下载 。

很多人学习培训python,不清楚从何学习。
很多人学习培训python ,把握了基础英语的语法之后,不清楚在哪儿找寻实例入门。
许多早已做实例的人,却不清楚如何去学习培训更为深奥的专业知识 。
那麼对于这三类人 ,我给大伙儿出示一个好的在线学习平台,免费领教程视频,电子书 ,及其课程内容的源码!??¤
QQ群:623406465

完成构思

1.挑选一个适合的vip解析网址 ,这儿挑选了无名小站的插口,由于试着了许多网址,一些网址要想抓取很艰难 ,无名小站相对性简易,插口为www.wmxz.wang/video.php?url=[vip电影的连接]
2.运用Fiddler开展抓包软件,仿真模拟电脑浏览器推送post请求,获得电影具体下载详细地址。
3.应用PyQt5开展包裝,完成多元化的作用。(可选)

网页页面剖析

我应用Fiddler抓包软件 ,最先,电脑浏览器进到插口,这儿随意加一个vip电影的连接 ,随后看来post请求:

大家早已知道递交post请求的url,箭头符号所说的地区是递交的表格,里边的url便是我们要下载vip电影的ur ,出現?这种是由于将url编号为了更好地ASCII码,这儿很有可能应用urllib对其开展分析,非常简单;vkey必须大家获得 ,实际上它就藏在Post请求以前get请求回到的网页页面中 ,vkey是变化规律的,每一次都不一样 。红杠一部分是缺少对象的信息内容,前几日我抓取的情况下里边的url還是电影的下载连接 ,如今变成了一个m3u8文档,里边的网站地址也是编号后的,大家必须用urllib开展编解码 ,大家手动式开启https://youku.cdn2-okzy.com/20200408/8808_23a9c669/index.m3u8看一下里边的內容,下载后开启

发觉里边并沒有大家要想的ts文件,可是在文档中有一行1005k/hls/index.m3u8 ,也是以m3u8为后缀名的,应用前边的url与文档中的一部分详细地址拼凑,結果为: https://youku.cdn2-okzy.com/20200408/8808_23a9c669/1005k/hls/index.m3u8 ,再度用电脑浏览器手动式开启,下载內容后发觉里边是一个个ts文件,最终将ts文件下载后拼凑就可以(由于我爬的情况下還是电影连接 ,写文章赚钱时发觉改了 ,因此拼凑方式 因为我不容易,在网上应当非常容易寻找)。

下边大家要是获得vkey就可以获得这种ts文件详细地址了,大家向前走 ,找回到內容有vkey的get请求:

比照发觉和post请求中的vkey一样,接下去就可以刚开始撰写编码了。

编码完成

  1. 获得vkey,从上边的剖析我们可以了解 ,get请求的网站地址为
    https://www.administratorm.com/WANG.WANG/index.php?url=[要下载的vip电影]
    我选用键入连接的方法来拼凑get请求要浏览的url,顺带应用urllib库将键入连接编号,便捷后边的post请求应用
headers1 = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36', 'Referer':'https://www.administratorm.com/index.php?url=https://v.qq.com/x/cover/mzc00200q06w7zx/j0033kbdjsv.html' } headers2 = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'} #界定插口连接 api_url = 'https://www.administratorm.com/WANG.WANG/Api.php' input_url = input("输入您电影url链接:") print("请稍等!") get_key_url = 'https://www.administratorm.com/WANG.WANG/index.php?url=' input_url parsed_url = parse.quote(input_url,safe='')

这儿建立一个对话 ,对话是用以网络服务器纪录客户真实身份的,随后便是推送get请求,获得网页源码 ,随后应用re配对到vkey的內容,这儿要留意的是get请求中的verify=False主要参数,实际上我也不太搞清楚 ,是一些网址有SSl验证 ,加了这一主要参数就可以绕过验证,加了此参数很有可能会出现许多警示,应用 logging.captureWarnings(True) 设定无法显示警示 。

sess = requests.session() vkey = get_key(sess,get_key_url) def get_key(sess,get_key_url): logging.captureWarnings(True) response = sess.get(get_key_url,headers=headers1,verify=False) response.encoding=response.apparent_encoding content = response.text vkey = re.findall('vkey.*?\'(.*?)\'',content)[0] return vkey

2.制做表格 ,获得了vkey后,大家就可以制做递交post请求的表格了,编码非常简单 ,也不做详细介绍了 。

datas = make_dataform(parsed_url,vkey) def make_dataform(parsed_url,vkey): datas = { 'url':parsed_url, 'wap':'0', 'ios':'0', 'vkey':vkey, 'type':'' } return datas

3.推送post请求,这儿再度表明,因为我原先post请求回到的信息内容是电影下载详细地址 ,所以我得到 的url是下载详细地址,如今再递交post请求得到 的是m3u8文档。

download_url = post(sess,datas) def post(sess,datas): response = sess.post(api_url,headers=headers2,data=datas) response.encoding=response.apparent_encoding u = json.loads(response.text) return u['url']

4.下载电影,因为连接不一样,我也将我下载电影的编码放进这儿 ,做一个参照。

down_load(sess,download_url) def down_load(sess,download_url): print("已经提前准备下载电影") response = requests.get(download_url,headers=headers2,verify=False) total_size = response.headers['Content-Length'] print("即将下载的电影尺寸:{}MB".format(round(int(total_size)/1024/1024,2))) batch_size = int(total_size)//100 #回到迭代器:是将二进制流按尺寸切分以后的 k = input("输入您文件路径(C/D):") filename = input("输入您储存文件夹名称:") with open(r"{}:/电影/".format(k) filename ".mp4",'wb') as f: i = 0 for content in response.iter_content(chunk_size=batch_size): f.write(content) print('\r','#'*i ' 已下载{}%'.format(i),end='\r',flush=True) i = 1 print("下载取得成功")

程序页面

应用PyQt5将上边的编码包裝起來,使其更为美观大方,并加上一些作用 ,因为WebEngineView早已不可以播放视频flash了 ,而且一些必须在建标识的链接打不开,因此正中间的电脑浏览器很可有可无,就图个美丽的吧 。

这儿也不详尽讲了 ,PyQt5也非常简单,非常容易入门,假如有需求的话联络我啊。

小结

这是我第一次写文章赚钱 ,假如哪有难题请立即强调来,热烈欢迎大伙儿纠正不正确,此网络爬虫新项目只用以新手入门 ,请不要用其赢利。不然,后果很严重!

文章来源于网络,如有侵权请联系站长QQ61910465删除
本文版权归去快排wWw.seogUrublog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系qq❉61910465