好看短视频解析下载Python脚本

 5516

好看视频是百度旗下的短视频平台,里面有海量好看的短视频,遇到我们喜欢的,要如何下载呢。

下面直接给出python语言中地址的解析及各种不同格式视频的下载。

  1. #encoding:utf-8
  2. # 好看视频下载
  3.   
  4. import socket
  5. from urllib.request import urlopen
  6. import urllib
  7. import re
  8. import time
  9. from pyquery import PyQuery as pq
  10. import requests
  11. from tqdm import tqdm # 打印进度条的库
  12. import gzip
  13.   
  14. print('程序开始运行。。。')
  15. requests.adapters.DEFAULT_RETRIES = 5
  16. # connect to a URL
  17. timeout = 30
  18. socket.setdefaulttimeout(timeout)#这里对整个socket层设置超时时间。后续文件中如果再使用到socket,不必再设置
  19. sleep_download_time = 3
  20. time.sleep(sleep_download_time) #这里时间自己设定
  21.   
  22. # 输入好看视频地址
  23. haokanurl = input('请输入要下载的好看视频的网页地址:')
  24. # haokanurl = 'https://haokan.baidu.com/v?vid=7448757459481911514&tab=yinyue_new'#示例地址
  25.   
  26. #为了避免出现403提示,这里伪装浏览器
  27. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
  28. req = urllib.request.Request(url=haokanurl, headers=headers)
  29. website = urlopen(req,timeout = 90)
  30. print('好看视频下载地址解析中')
  31.   
  32. # read html code
  33. html = website.read().decode('UTF-8')
  34. #html = website.read().decode()
  35. #当使用上面的直接decode()出错时可以使用下面的方法
  36. # html = website.read()
  37. # buff = BytesIO(html)
  38. # f = gzip.GzipFile(fileobj=buff)
  39. # html = f.read().decode('utf-8')
  40. website.close()
  41.   
  42. # use re.findall to get all the links
  43.   
  44. # 取得视频名称(标题)
  45. videotitle = re.findall('<h1 class="videoinfo-title">(.*?)</h1>',html)[0]
  46. print(videotitle)
  47. # 默认地址
  48. links = re.findall('"playurl":"(.*)","clarityUrl"',html)#默认地址
  49. downurl = links[0]
  50. downurl = downurl.replace('\\','')
  51. print('视频实际地址:')
  52. print(downurl)
  53. print('现在开始下载该视频,请稍等。。。')
  54. res = requests.get(downurl, headers={'user-agent': 'chrome'})
  55. total_size = round(int(res.headers["Content-Length"])/1024/1024)
  56. print('解析完成,视频大小为:' + str(total_size) + 'MB。现在开始下载。')
  57. with open(f'{videotitle}down.mp4', 'wb') as f:
  58.      for chunk in tqdm(iterable=res.iter_content(1024*1024), total=total_size, unit='KB'):\
  59.          f.write(chunk)
  60.      print('下载完成。')
  61.   
  62. sdlinks = re.findall('"key":"sd","rank":0,"title":"(.*?)","videoBps":',html)[0]#标清地址
  63. sdlinks = re.findall('"url":"(.*)',sdlinks)
  64. sdurl = sdlinks[0]
  65. sdurl = sdurl.replace('\\','')
  66. print('标清视频地址是:')
  67. print(sdurl)
  68. print('现在开始下载标清视频,请稍等。。。')
  69. res = requests.get(sdurl, headers={'user-agent': 'chrome'})
  70. total_size = round(int(res.headers["Content-Length"])/1024/1024)
  71. print('解析完成,视频大小为:' + str(total_size) + 'MB。现在开始下载。')
  72. with open(f'{videotitle}标清.mp4', 'wb') as f:
  73.      for chunk in tqdm(iterable=res.iter_content(1024*1024), total=total_size, unit='KB'):\
  74.          f.write(chunk)
  75.      print('下载完成。')
  76.   
  77.   
  78. hdlinks = re.findall('"key":"hd","rank":1,"title":"(.*?)","videoBps":',html)[0]#高清地址
  79. hdlinks = re.findall('"url":"(.*)',hdlinks)
  80. hdurl = hdlinks[0]
  81. hdurl = hdurl.replace('\\','')
  82. print('高清视频地址是:')
  83. print(hdurl)
  84. print('现在开始下载高清视频,请稍等。。。')
  85. res = requests.get(hdurl, headers={'user-agent': 'chrome'})
  86. total_size = round(int(res.headers["Content-Length"])/1024/1024)
  87. print('解析完成,视频大小为:' + str(total_size) + 'MB。现在开始下载。')
  88. with open(f'{videotitle}高清.mp4', 'wb') as f:
  89.      for chunk in tqdm(iterable=res.iter_content(1024*1024), total=total_size, unit='KB'):\
  90.          f.write(chunk)
  91.      print('下载完成。')
  92.   
  93.   
  94. sclinks = re.findall('"key":"sc","rank":2,"title":"(.*?)","videoBps":',html)[0]#超清地址
  95. sclinks = re.findall('"url":"(.*)',sclinks)
  96. scurl = sclinks[0]
  97. scurl = scurl.replace('\\','')
  98. print('超清视频地址是:')
  99. print(scurl)
  100. print('现在开始下载超清视频,请稍等。。。')
  101. res = requests.get(scurl, headers={'user-agent': 'chrome'})
  102. total_size = round(int(res.headers["Content-Length"])/1024/1024)
  103. print('解析完成,视频大小为:' + str(total_size) + 'MB。现在开始下载。')
  104. with open(f'{videotitle}超清.mp4', 'wb') as f:
  105.      for chunk in tqdm(iterable=res.iter_content(1024*1024), total=total_size, unit='KB'):\
  106.          f.write(chunk)
  107.      print('下载完成。')
  108.   
  109.   
  110. p1080links = re.findall('"key":"1080p","rank":3,"title":"(.*?)","videoBps":',html)[0]#蓝光地址
  111. p1080links = re.findall('"url":"(.*)',p1080links)
  112. p1080url = p1080links[0]
  113. p1080url = p1080url.replace('\\','')
  114. print('蓝光视频地址是:')
  115. print(p1080url)
  116. print('现在开始下载蓝光视频,请稍等。。。')
  117. res = requests.get(p1080url, headers={'user-agent': 'chrome'})
  118. total_size = round(int(res.headers["Content-Length"])/1024/1024)
  119. print('解析完成,视频大小为:' + str(total_size) + 'MB。现在开始下载。')
  120. with open(f'{videotitle}蓝光.mp4', 'wb') as f:
  121.      for chunk in tqdm(iterable=res.iter_content(1024*1024), total=total_size, unit='KB'):\
  122.          f.write(chunk)
  123.      print('下载完成。')
  124.   
  125. print('所有格式视频下载完成,请检查是否正确。')


本文网址:https://www.zztuku.com/detail-9238.html
站长图库 - 好看短视频解析下载Python脚本
申明:如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐