找回密码
  注册[Register]
查看: 1545|回复: 16

[python] [Python] 虎课网批量下载

  [复制链接]
发表于 2020-10-28 08:59 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

本帖最后由 宇文卜吉格 于 2020-10-28 09:01 编辑

前言

前几天我发现虎课网改版了,不能直接用猫抓抓m3u8链接,然后到m3u8下载器下载了,所以今天研究了下,顺便写了个可以批量下载的小程序。


代码
  1. import requests
  2. from lxml import etree
  3. import re
  4. import os

  5. headers_mobile = {
  6.     'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
  7.    }

  8. Lists = []
  9. # 实现单个视频下载
  10. def single_run(url2,Cookie,_csrf_frontend):
  11.     url1 = 'https://m.huke88.com/video/video-url'
  12.     id = re.findall(r'\b\d+\b', url2)[0]
  13.     headers1 = {
  14.         'Cookie':Cookie,
  15.         'Host': 'm.huke88.com',
  16.         'Referer': url2,
  17.         'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1',
  18.         'Accept': 'application/json, text/javascript, */*; q=0.01',
  19.         'Origin': 'https://m.huke88.com',
  20.         'X-Requested-With': 'XMLHttpRequest',
  21.         'Sec-Fetch-Dest': 'empty',
  22.         'Sec-Fetch-Mode': 'cors',
  23.         'Sec-Fetch-Site': 'same-origin'
  24.     }
  25.     data = {
  26.         'id': id,
  27.         '_csrf-frontend': _csrf_frontend
  28.     }

  29.     response = requests.post(url=url1, headers=headers1, data=data)
  30.     videoUrl = response.json().get('data').get('videoUrl')

  31.     response = requests.get(url=url2, headers=headers_mobile)
  32.     html = etree.HTML(response.text)
  33.     title = html.xpath("//h1[@class='con']/text()")[0]
  34.     infos = {
  35.         'videoUrl':videoUrl,
  36.         'title':title
  37.     }
  38.     print(infos)
  39.     Lists.append(infos)

  40. def Parse_page(url,Cookie):
  41.     response = requests.get(url=url)
  42.     html = etree.HTML(response.text)
  43.     #First_dir = html.xpath("//h2/text()")[0]
  44.     section_lists = html.xpath("//div[@class='item-tit']")[0]
  45.     for les_item in section_lists:
  46.         hrefs = les_item.xpath("//div[@class='cont-box']/div[@class='box-main']//a[@target='_blank']/@href")
  47.         for href in hrefs:
  48.             if href[0:7] != "https:/":
  49.                 href = "https://huke88.com" + href
  50.             single_run(href,Cookie)

  51. # 只做解析,生成 bat 文件,用 nilaoda 的下载器下载即可
  52. def write(List):
  53.     with open('格式.bat','w',encoding='utf-8') as f:
  54.         f.write('@echo off'+'\n'+'::Created by N_m3u8DL-CLI-SimpleG'+ '\n' +  r'chcp 65001 >nul'+'\n')
  55.         dir = r'./Downloads'
  56.         if os.path.exists(dir) == False:
  57.             os.makedirs('Downloads')
  58.         for i in List:
  59.             try:
  60.                 f.write('"' + "N_m3u8DL-CLI_v2.7.5.exe" + '"' + ' ' + '"' + i.get('videoUrl') + '"' + ' ' + '--workDir' + ' ' + dir + ' ' + '--saveName' + ' ' + i.get('title') + '\n')
  61.             except:
  62.                 pass

  63. if __name__ == '__main__':
  64.     print('请输入网址,例如:https://huke88.com/route/ae.html 或 https://huke88.com/course/3238.html')
  65.     url = input('请输入网址:')
  66.     #Cookie 需要改 UA 再获取
  67.     Cookie = input('请输入Cookie:')
  68.     # video-play 里面可以看到
  69.     _csrf_frontend = input('请输入_csrf-frontend:')
  70.     a = url.split('/')
  71.     if a[-2] == 'route':
  72.         Parse_page(url, Cookie)
  73.         write(Lists)
  74.     else:
  75.         single_run(url, Cookie=Cookie,_csrf_frontend=_csrf_frontend)
  76.         write(Lists)
复制代码


用法

程序需要输入三个东西
1.是网址,这里 https://huke88.com/route/ps.html 就是批量,https://huke88.com/course/2018.html ,就是单个视频下载。
2、3 都需要改 UA 刷新网页在 video-url 中获取
视频教程+软件:https://aohua.lanzoui.com/iBN6nhskrxa




吐槽

虎课网就算改版了,还是可以从上面下载视频。至于为什么非要改 UA 才能下载视频,别问我为什么,这是经验。
还有代码是今天晚上加紧写出来的,质量也不高,能用就行了,如果没有什么特别大的问题就不更新了。
本程序只做解析,生成的 bat 文件请用 https://github.com/nilaoda/N_m3u8DL-CLI/releases 下载。


免费评分

参与人数 1热心值 +1 牛币 +1 收起 理由
Carl_19 + 1 + 1 感谢发布原创作品,大牛论坛因你更精彩!

查看全部评分

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2020-10-28 09:03 | 显示全部楼层
多谢分享多谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-28 09:16 | 显示全部楼层
谢谢楼主分享,先收藏了。
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-28 09:18 | 显示全部楼层
谢谢大佬
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-28 09:38 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-28 09:41 | 显示全部楼层
6666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-28 10:11 | 显示全部楼层

不错不错~~~~~
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-28 10:21 | 显示全部楼层
多谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-28 10:26 | 显示全部楼层

支持楼主,谢谢分享。
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-28 10:32 | 显示全部楼层
谢谢大佬分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

RSS订阅|手机版|小黑屋|大牛论坛 |我的广告

GMT+8, 2024-4-25 12:29 , Processed in 0.042446 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表