实战:用Python抓取腾讯视频电影

实战:用Python抓取腾讯视频电影_第1张图片

运行环境

  • IDE丨pycharm

  • 版本丨Python3.6

  • 系统丨Windows

实现目的与思路

目的:

实现对腾讯视频目标url的解析与下载。

思路:

首先拿到想要看的腾讯电影url,通过第三方vip视频解析网站进行解析,通过抓包,模拟浏览器发送正常请求,通过拿到缓存ts文件,下载视频ts文件,最后通过转换为mp4文件,即可实现正常播放。

完整代码

import re``import os,shutil``import requests,threading``from urllib.request import urlretrieve``from pyquery import PyQuery as pq``from multiprocessing import Pool``'''``'''``class video_down():`    `def __init__(self,url):`        `# 拼接全民解析url`        `self.api='https://jx.618g.com'`        `self.get_url = 'https://jx.618g.com/?url=' + url`        `#设置UA模拟浏览器访问`        `self.head = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}`        `#设置多线程数量`        `self.thread_num=32`        `#当前已经下载的文件数目`        `self.i = 0`        `# 调用网页获取`        `html = self.get_page(self.get_url)`        `if html:`            `# 解析网页`            `self.parse_page(html)`    `def get_page(self,get_url):`        `try:`            `print('正在请求目标网页....',get_url)`            `response=requests.get(get_url,headers=self.head)`            `if response.status_code==200:`                `#print(response.text)`                `print('请求目标网页完成....\n 准备解析....')`                `self.head['referer'] = get_url`                `return response.text`        `except Exception:`            `print('请求目标网页失败,请检查错误重试')`            `return None``   ``   `    `def parse_page(self,html):`        `print('目标信息正在解析........')`        `doc=pq(html)`        `self.title=doc('head title').text()`        `print(self.title)`        `url = doc('#player').attr('src')[14:]`        `html=self.get_m3u8_1(url).strip()`        `#self.url = url + '800k/hls/index.m3u8'`        `self.url = url[:-10] +html`        `print(self.url)`        `print('解析完成,获取缓存ts文件.........')`        `self.get_m3u8_2(self.url)`    `def get_m3u8_1(self,url):`        `try:`            `response=requests.get(url,headers=self.head)`            `html=response.text`            `print('获取ts文件成功,准备提取信息')`            `return html[-20:]`        `except Exception:`            `print('缓存文件请求错误1,请检查错误')``   ``   `    `def get_m3u8_2(self,url):`        `try:`            `response=requests.get(url,headers=self.head)`            `html=response.text`            `print('获取ts文件成功,准备提取信息')`            `self.parse_ts_2(html)`        `except Exception:`            `print('缓存文件请求错误2,请检查错误')`    `def parse_ts_2(self,html):`        `pattern=re.compile('.*?(.*?).ts')`        `self.ts_lists=re.findall(pattern,html)`        `print('信息提取完成......\n准备下载...')`        `self.pool()`    `def pool(self):`        `print('经计算需要下载%d个文件' % len(self.ts_lists))`        `self.ts_url = self.url[:-10]`        `if self.title not in os.listdir():`            `os.makedirs(self.title)`        `print('正在下载...所需时间较长,请耐心等待..')`        `#开启多进程下载`        `pool=Pool(16)`        `pool.map(self.save_ts,[ts_list for ts_list in self.ts_lists])`        `pool.close()`        `pool.join()`        `print('下载完成')`        `self.ts_to_mp4()`    `def ts_to_mp4(self):`        `print('ts文件正在进行转录mp4......')`        `str='copy /b '+self.title+'\*.ts '+self.title+'.mp4'`        `os.system(str)`        `filename=self.title+'.mp4'`        `if os.path.isfile(filename):`            `print('转换完成,祝你观影愉快')`            `shutil.rmtree(self.title)``   ``   `    `def save_ts(self,ts_list):`        `try:`            `ts_urls = self.ts_url + '{}.ts'.format(ts_list)`            `self.i += 1`            `print('当前进度%d/%d'%(self.i,len(self.ts_lists)))`            `urlretrieve(url=ts_urls, filename=self.title + '/{}.ts'.format(ts_list))`        `except Exception:`            `print('保存文件出现错误')``   ``   ``   ``   ``if __name__ == '__main__':`    `#电影目标url:狄仁杰之四大天王`    `url='https://v.qq.com/x/cover/r6ri9qkcu66dna8.html'`    `#电影碟中谍5:神秘国度`    `url1='https://v.qq.com/x/cover/5c58griiqftvq00.html'`    `#电视剧斗破苍穹`    `url2='https://v.qq.com/x/cover/lcpwn26degwm7t3/z0027injhcq.html'`    `url3='https://v.qq.com/x/cover/33bfp8mmgakf0gi.html'`    `video_down(url2)

视频缓存ts文件

这里都是一些缓存视频文件,每个只有几秒钟播放,最后需要合并成一个mp4格式的视频,就可以正常播放,默认高清下载 。

注意这里的进度因为使用多进程下载,进度仅供参考,没有确切显示进度,可以进文件夹查看正常进度,可以理解为显示一次进度,下载一个ts文件。

实现效果

实战:用Python抓取腾讯视频电影_第2张图片

实战:用Python抓取腾讯视频电影_第3张图片
以上就是“实战:用Python抓取腾讯视频电影”的全部内容,希望对你有所帮助。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

你可能感兴趣的:(python,音视频,开发语言)