python读取视频,

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: