python 爬虫学习–爬取m3u8视频文件
之前学习了python爬虫,直到了you-get,但是有些网站还是获取不到,所以就又了解到了m3u8这种格式的视频流,学习着取爬了些小网站的视频。
m3u8文件获取
首先先去获取m3u8的一级网址(有的需要重定向,有的不需要),我的这个是需要重定向的,不需要重定向的话,直接获取就可以了。
注:因为不知道怎么正则表达式处理,所以就用了比较原始的方法取切片了,,,就最终效果来看还行
def get_m3u8_1(url):
'''
获取网站m3u8地址
'''
res = requests.get(url).text
# print(res)
s1 = "\"url\":\"h"
s2 = "m3u8"
# print(s1)
s1_index = res.find(s1)
s2_index = res.find(s2)
# print(s1_index)
# print(s2_index)
s1_index+=7
s2_index+=4
ss = res[s1_index:s2_index]
s3 = "\/"
s4 = "/"
r = ss.replace(s3,s4)
return r
重定向后的地址获取
def get_m3u8_2(url):
'''
得到重定向后的m3u8地址
'''
res = requests.get(url).text
# print(res)
r = "https://xxx.xxxxx.com";
# res.replace("\n","").replace("\r","")
res_index = res.find("/")
r = r + res[res_index:]
return r
读取ts流文件
再从重定向后的网址,读取.ts文件就可以得到视频了,最后再进行合成,但是一般来说,如果进行加密了的话,合成后的mp4文件时没有办法看的(当然.ts也没有办法看),所以要进行解密,下面再讲。
.ts都在“EXTINF”的下一行,自己用一种方法读取就行了。我这里就还是使用的find,然后找到直接定位到下一行。
具体代码放到下面整体实现了(download函数)
获取密钥并解密
m3u8文件内容信息这里就不说了,主要说key的一行,有个key.key结尾的网址,那里是存的密钥,先读出来,方便下面解密。
获取密钥的代码如下<