可批量爬取某影视工厂 m3u8 文件
本帖最后由 szsnk144864 于 2022-8-25 20:45 编辑昨天在52里寻求了一下了各位大佬的帮助,终于解决了问题(帖子地址:https://www.52pojie.cn/thread-1679009-1-1.html),十分感谢各位大佬的帮助。
虽然各位大佬给了我很多帮助,让我把代码弄出来了,有些视频可以下载,有些不行,但是我的理解能力有限,写的不怎么很好,还请各位大佬勿喷,,
此代码只获取m3u8地址,并不下载视频,因为多线程和合并我不会写,,,我的思路是把m3u8文件弄下来,然后根据通过N_m3u8DL下载器批量下载。
但是在下载的过程中发现,不知道是不是下载器线程太多,导致下载几集之后,下载器就显示m3u8文件失效了,下载失败,只有重新获取m3u8文件才行,也挺麻烦的,,,,,,
import requests
import re
import json
import base64
headers = {
# 'Referer': 'https://www.ysgc.vip/vodplay/17287-2-1.html',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36'
}
# 获取视频的名称和视频的 m3u8 文件
def get_m3u8():
# 用来存储 m3u8 地址
video_path = 'd://desktop/数码宝贝' + '.txt'
with open(video_path, 'w', encoding='utf-8') as fp:
fp.write(' ')
fp.close()
qq = open(video_path, 'w', encoding='utf-8')
# 用来存储所有集数的播放链接
play_url = []
session = requests.Session()
# 通过循环来获取每个播放页面,55 指的是播放集数 ,vodplay后面的 17287-2 是播放的位置,修改也就是修改这里
for s in range(31, 40):
lang_url = 'https://www.ysgc.vip' + f'/vodplay/17287-2-{s}.html'
play_url.append(lang_url)
# 通过循环来获取每一集的 m3u8 文件
for i in play_url:
# 获取视频名称
video_name = (re.findall(r'<title>(.*?)免.*?</title>', (session.get(i).text)))
# 获取 var play = {} 数据
get_var_play = json.loads(re.findall(r'<script type="text/javascript">var player_aaaa=(.*?)</script>', (session.get(i).text)))
# 获取视频真实播放链接,并直接获取该地址的源代码,这里的dplay ,要根据解析平台需要自己修改,例如某讯视频就得用qq
video_url = session.get(f'https://www.ysgc.vip/static/player/dplayer.php?url={get_var_play["url"]}').text
# 获取m3u8的加密地址
m3u8_url = re.findall(r"var.*?urls.*?=.*?'(.*?)';", video_url)
# 解密地址,并通过切割获取到m3u8链接,最后删除后面的9位数,得到最终的结果
m3u8_true_url = ('http:' + (((str(base64.b64decode(m3u8_url.encode()))).split(' ')).split('https:')))[:-9]
# 写入文件
qq.write(str(video_name) + ',' + str(m3u8_true_url) + '\n')
print(str(video_name) + ' >>>>>>>>>>> 写入完成')
session.close()
qq.close()
get_m3u8()
szsnk144864 发表于 2022-8-24 16:46
这个还真没遇到过,会不会是音频跟视频是分开的,只下载了音频?
这个就不清楚了 因为是同一个网站 用同一样的代码下载下来的有些没问题 有些就会出现这样的情况 a434024 发表于 2022-8-24 16:44
不知道楼主有没有遇到过下载的m3u8合并mp4后只有声音 没有画面的情况
这个还真没遇到过,会不会是音频跟视频是分开的,只下载了音频? m3u8失效,有一种可能是m3u8是短时播放链接,往往是实时更新的 lianquke 发表于 2022-8-24 12:48
m3u8失效,有一种可能是m3u8是短时播放链接,往往是实时更新的
原来如此{:1_893:} 牛啊大佬 windsecret 发表于 2022-8-24 13:29
牛啊大佬
还有bug,有一些视频解密之后的m3u8文件不能用,,,, 他们设置m3u8缓存有时效的,拿到也没多大用处 有没有一种可能 网站限制了。一个ip只可以获取多少 或者规定时间内获的多久封ip?多搜集一点cookie 估计能改善。 不知道楼主有没有遇到过下载的m3u8合并mp4后只有声音 没有画面的情况 feichu 发表于 2022-8-24 15:48
有没有一种可能 网站限制了。一个ip只可以获取多少 或者规定时间内获的多久封ip?多搜集一点cookie 估计 ...
有可能,试试看