三滑稽甲苯 发表于 2020-11-21 23:04

批量下载腾讯视频(电视剧)

本帖最后由 三滑稽甲苯 于 2020-12-5 20:28 编辑

原理
1. 爬取给定网址中每一集的网址
2. 使用you-get下载每一集
主要代码↓
from os.path import exists
from requests import Session
from bs4 import BeautifulSoup as bs
from you_get import common

class Teleplay():
    def __init__(self, url, path):
      if exists(path): self.path = path
      else:
            raise ValueError('Invalid download path!(' + path + ')')
      self.url = url
      self.conn = Session()
      self.down_url = []
      self.get_down_url()
    def get_down_url(self):
      soup = bs(self.conn.get(self.url).text, features="html.parser")
      base = str(soup.findAll('div', {'class': 'mod_episode'}))
      res = bs(base, features="html.parser")
      for url in res.findAll('a'):
            self.down_url.append(url['href'])
    def download(self):
      for down in self.down_url:
            common.any_download(url='https://v.qq.com'+down, stream_id='mp4', info_only=False, output_dir=self.path, merge=True)
    def show(self):
      for url in self.down_url: print('https://v.qq.com' + url)

注意
1. 需要的第三方module: requests, BeautifulSoup4, you-get
2. 无法下载vip视频↓(you-get的限制)
3. 支持断点下载(you-get的功能)
4. 出现卡顿,ctrl+c中断后重新运行,参数不要改变,应该会继续之前的下载

食用方法
自己动手,丰衣足食

1. 保存以上代码,命名为“TencentVideo.py”
2. 同目录下新建“xxx.py”(名称随意),按“示例↓”一栏填写代码
3. 运行
懒人法
1. 保存以上代码,命名为“TencentVideo.py”
2. 同目录下新建“xxx.py”(名称随意),复制以下代码
from TencentVideo import Teleplay
from os.path import exists
if exists('info.txt'):
    with open('info.txt', encoding="utf-8") as f:
      l = f.readlines()
      url, path = l
else:
    url = input('URL: ')
    path = input('PATH: ')
main = Teleplay(url, path)
main.download()
3. 若运行上面代码时可以直接复制粘贴,则直接粘贴对应信息即可;若无法粘贴,同目录下新建info.txt并填入信息(文件开头第一行先填网址,回车后第二行填保存路径)后运行以上代码
exe封装版
若运行exe时可以直接复制粘贴,则直接粘贴对应信息即可;若无法粘贴,同目录下新建info.txt并填入信息(文件开头第一行先填网址,回车后第二行填保存路径)后运行exe
填info.txt的范例

示例↓
示例1. 显示此电视剧每一集的观看网址↓
from TencentVideo import Teleplay
test = Teleplay('https://v.qq.com/x/cover/mzc00200odgluaz.html', r'E:\python\script\modules\腾讯视频\test')# 参数为任一集的网址+保存路径
test.show()

示例2. 下载↓
from TencentVideo import Teleplay
test = Teleplay('https://v.qq.com/x/cover/mzc00200odgluaz.html', r'E:\python\script\modules\腾讯视频\test') # 参数为任一集的网址+保存路径
test.download()


示例3. 播放↓

更新日志
2020.12.5摒弃system()调用you_get, 改用import以便于使用及打包(打包的V1版本由于未知原因无法使用)
下载地址
x64的exe及历史脚本:https://wwx.lanzoux.com/b00zzd1lg      密码:gncm
@hehehero 封装的.exe:https://kof97.lanzoui.com/ihZTniruhfc

司徒浩 发表于 2020-11-21 23:16

cdygr 发表于 2020-11-21 23:14

能不能有直接可以用的成品啊?

三滑稽甲苯 发表于 2020-11-21 23:31

rjyq168 发表于 2020-11-21 23:17
是以文本的方式保存代码吗?

1 新建文本文档
2 打开并粘贴代码
3 重命名为教程中的名字(注意后缀名)

吾爱破劫 发表于 2020-11-21 23:11

这么神奇,不错不错

rjyq168 发表于 2020-11-21 23:17

是以文本的方式保存代码吗?

康杰 发表于 2020-11-21 23:26

非常感谢分享

aylitat 发表于 2020-11-21 23:33

emmmmm 还以为是个工具。看来我需要学一下代码了:sleepy:

迪幻 发表于 2020-11-21 23:34

谢谢楼主分享

ao610336999 发表于 2020-11-21 23:40

我感觉可以同腾讯视频客户端 就可以缓存 然后加个转换器哦了
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 批量下载腾讯视频(电视剧)