python读取视频,
本文主要介绍如何使用python来抓取腾讯的所有视频。本文通过示例代码向您详细介绍,具有一定的参考价值。有需要的朋友可以参考一下。
00-1010操作环境实现目的和思路目的和思路完整代码视频缓存ts文件实现效果
目录
IDE pycharm版本Python3.6系统窗口
运行环境
实现目的与思路
实现腾讯视频目标url的分析下载,由于第三方vip分析,只提供在线观看,隐藏了下载目标视频的欲望。
目的
先获取你想看的腾讯电影的网址,通过第三方vip视频分析网站进行分析,抓取数据包,模拟浏览器发送正常请求,获取缓存的ts文件,下载视频ts文件,最后转换成mp4文件,就可以正常播放了。
思路
进口re
导入操作系统,shutil
导入请求,线程
从urllib.request导入urlretrieve
从pyquery导入PyQuery作为pq
从多处理导入池
class video_down():
def __init__(self,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,像壁虎一样)Chrome/63 . 0 . 3239 . 132 Safari/537.36 }
#设置线程数量
self.thread_num=32
#目前已下载的文件数量
self.i=0
#呼叫网页获取
html=self . get _ page(self . get _ URL)
如果html:
#解析网页
self.parse_page(html)
def get_page(self,get_url):
尝试:
打印(请求目标网页.,get_url)
response=requests.get(get_url,headers=self.head)
if response . status _ code==200:
#打印(response.text)
打印(请求目标网页完成.\ n准备分析.)
self.head[referer]=get_url
返回响应。文本
除了例外:
打印(“请求目标网页失败,请检查错误并重试”)
不返回
def parse_page(self,html):
打印(正在解析目标信息.....................
doc=pq(html)
self.title=doc(head title )。文本()
打印(自我标题)
url=doc(#player )。attr(src)[14:]
海地
ml=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实现抓取腾讯视频所有电影的示例代码的详细内容,更多关于Python抓取腾讯视频的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。