Python抓取下载M3U8小鹅通回放视频代码
1、先找到视频对应的m3u8地址,打开开发者工具,找到getPlayUrl,返回的json里边有一个视频的play_url地址;
2、可以下载m3u8文件,使用记事本打开,查看文件内容。
3、使用Python解析m3u8文件里的url,进行视频下载。
import time import requests import re from Crypto.Cipher import AES #这个url里找response,"play_list"->"play_url"的值 #https://appfu6neoom7322.h5.xiaoeknow.com/xe.material-center.play/getPlayUrl def m3u8(name,url): header = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36' } # requests得到m3u8文件内容 content = requests.get(url ,headers=header).text if "#EXTM3U" not in content: print("这不是一个m3u8的视频链接!") return False if "EXT-X-KEY" not in content: print("没有加密") return False # 使用re正则得到key和视频地址 jiami =re.findall('#EXT-X-KEY:(.*)\n' ,content) key =re.findall('URI="(.*)"' ,jiami[0]) vi = re.findall('IV=(.*)' ,jiami[0])[0] # 得到每一个ts视频链接 tslist =re.findall('EXTINF:(.*),\n(.*)\n#' ,content) newlist =[] for i in tslist: newlist.append(i[1]) # 得到key的链接并请求得到加密的key值 keyurl =key[0] keycontent= requests.get(keyurl ,headers=header).content # 得到每一个完整视频的链接地址 base_url = url.replace(url.split('/')[-1] ,'') # print(base_url) tslisturl =[] for i in newlist: tsurl = base_url + i tslisturl.append(tsurl) # 得到解密方法,这里要导入第三方库 pycrypto # 这里有一个问题,安装pycrypto成功后,导入from Crypto.Cipher import AES报错 # 找到使用python环境的文件夹,在Lib文件夹下有一个 site-packages 文件夹,里面是我们环境安装的包。 # 找到一个crypto文件夹,打开可以看到 Cipher文件夹,此时我们将 crypto文件夹改为 Crypto 即可使用了 # 必须添加b'0000000000000000',防止报错ValueError: IV must be 16 bytes long cryptor = AES.new(keycontent, AES.MODE_CBC, b'0000000000000000') # for循环获取视频文件 for i in tslisturl: print(i) res = requests.get(i, header) # 使用解密方法解密得到的视频文件 cont =cryptor.decrypt(res.content) # 以追加的形式保存为mp4文件,mp4可以随意命名,这里命名为小鹅通视频下载测试 with open(name+'.mp4', 'ab+') as f: f.write(cont) return True if __name__ == '__main__': my_dict = { "龙舒净土文05": "https://v-vod-k.xiaoeknow.com/a8307e36f7a64aeeae086cc157bb356b/appfu6neoom7322/video/b_u_63904cd9453d8_Mx7BCQdl/lyjt59g30y80/drm/main.m3u8?sign=cd529f061a9cf89079a003bcfa30a328\u0026t=6867d6a3\u0026us=QqQZBMECZJ", "龙舒净土文06": "https://v-vod-k.xiaoeknow.com/a8307e36f7a64aeeae086cc157bb356b/appfu6neoom7322/video/b_u_63904cd9453d8_Mx7BCQdl/lxrbine20v12/drm/main.m3u8?sign=bbd4b2a8c72ef1e3b0e83c842e160b9f\u0026t=6867d947\u0026us=RwtbXCUrDW", "龙舒净土文07": "https://v-vod-k.xiaoeknow.com/a8307e36f7a64aeeae086cc157bb356b/appfu6neoom7322/video/b_u_63904cd9453d8_Mx7BCQdl/lxrbine20vkl/drm/main.m3u8?sign=1ef7c3b6a377312a047f74b22b10eabd\u0026t=6867de48\u0026us=sQiZANeidU", "龙舒净土文08": "https://v-vod-k.xiaoeknow.com/a8307e36f7a64aeeae086cc157bb356b/appfu6neoom7322/video/b_u_63904cd9453d8_Mx7BCQdl/lxrbine20x9j/drm/main.m3u8?sign=b6367264de990fa903f84c5d9239b10c\u0026t=6867dee2\u0026us=npOTzOMxmY", "龙舒净土文09": "https://v-vod-k.xiaoeknow.com/a8307e36f7a64aeeae086cc157bb356b/appfu6neoom7322/video/b_u_63904cd9453d8_Mx7BCQdl/lxrbine20176/drm/main.m3u8?sign=85bd603dbb637f0d4a545d593e327a47\u0026t=6867df37\u0026us=jVupjcVIWy", "龙舒净土文10": "https://v-vod-k.xiaoeknow.com/a8307e36f7a64aeeae086cc157bb356b/appfu6neoom7322/video/b_u_63904cd9453d8_Mx7BCQdl/lxrbine209bo/drm/main.m3u8?sign=5379f1459eeb8010cc882485c666ce7e\u0026t=6867dfb5\u0026us=TshqKKVIGz", "龙舒净土文11": "https://v-vod-k.xiaoeknow.com/a8307e36f7a64aeeae086cc157bb356b/appfu6neoom7322/video/b_u_63904cd9453d8_Mx7BCQdl/lyjt59g3059v/drm/main.m3u8?sign=2618104b9c162d31b9c2f8cf62aaacba\u0026t=6867e771\u0026us=TkhGdFMJoq", "龙舒净土文12": "https://v-vod-k.xiaoeknow.com/a8307e36f7a64aeeae086cc157bb356b/appfu6neoom7322/video/b_u_63904cd9453d8_Mx7BCQdl/lyjt59g30169/drm/main.m3u8?sign=2e34b46f624b66f2ee51d7a5661c1887\u0026t=6867e7ca\u0026us=nhgbtZwbuf", "龙舒净土文13": "https://v-vod-k.xiaoeknow.com/a8307e36f7a64aeeae086cc157bb356b/appfu6neoom7322/video/b_u_63904cd9453d8_Mx7BCQdl/lyjt59g308j9/drm/main.m3u8?sign=38b3db3b5ecce4d0b0a2f0b0190fc3e1\u0026t=6867e8b5\u0026us=kirvbcZNQG", "龙舒净土文14": "https://v-vod-k.xiaoeknow.com/a8307e36f7a64aeeae086cc157bb356b/appfu6neoom7322/video/b_u_63904cd9453d8_Mx7BCQdl/lyjt59g30xud/drm/main.m3u8?sign=7408f7e756e1b2cf95cc47071a49af54\u0026t=6867ec85\u0026us=ufhYMrNZug", "龙舒净土文15": "https://v-vod-k.xiaoeknow.com/a8307e36f7a64aeeae086cc157bb356b/appfu6neoom7322/video/b_u_63904cd9453d8_Mx7BCQdl/lyjt59g30n6o/drm/main.m3u8?sign=13d991efb2dcae958970eb09f874b338\u0026t=6867edbb\u0026us=oSoeSSIMtq" } # 这个是网页上查到的小鹅通的卖u8地址 for key in my_dict: print(key, my_dict[key]) pd = m3u8(key,my_dict[key]) if pd: print('视频下载完成!') time.sleep(5) # 暂停执行5秒
4、查看下载好的视频。
参考: https://www.cnblogs.com/chenlove/p/13611796.html