"""爬取 ts 视频文件"""import urllib.requestimport urllib.parseimport re#从网页上下载的m3u8的ts文件目录filepath = "/Users/xxxxxxx/Desktop/Film/Final/index1.m3u8"txt = open(filepath, "r").read()result=""test_text = re.findall("..............+ts", txt)#取出每行含有ts的文本result = result +'n'.join(test_text)#换行输出del_awake = result.replace("/20220205/8sSQcXhX/2306kb/hls/", "")#去掉每一行一样的字符串tspart=del_awake.split("n")#用这个方法将tresult拆成数组#print(tspart[193])# 保存ts到的文件夹dir_path = "/Users/xxxxxx/Desktop/Film"# ts视频流的基础路径base_url = "https://xxxx.xxxx.com:65/20220205/8sSQcXhX/2306kb/hls/"# 文件名的通用部分base_urlall = ""name = ""# 依次爬取for i in range(0, len(tspart)): base_urlall = base_url + tspart[i]#把url和每个文件名拼接在一起 #print(base_urlall) name = str(i) + ".ts"#生成文件名 #print(i,"+",name) urllib.request.urlretrieve(base_urlall, "/Users/xxxxxxx/Desktop/Film/allts/" + name)#最关键的一步:通过Url下载视频!"""合并 ts 文件"""import osbase_path = "/Users/xxxxxxxx/Desktop/Film/allts"dir_name = "ts_file"# 合并文件的目标文件夹save_path = '/Users/xxxxxxx/Desktop/Film/hebing'# 获取ts文件目录file_list = os.listdir(base_path)# 保存目标目录如果不存在则创建#if not os.path.exists(save_path):# os.mkdir(save_path)#合并文件的方法,download_path是下载ts文件的目录,hebing_path是合并后的文件存放的文件def heBingTsVideo(download_path,hebing_path): all_ts = os.listdir(download_path) with open(hebing_path, 'wb+') as f: for i in range(len(all_ts)): ts_video_path = os.path.join(download_path, all_ts[i]) f.write(open(ts_video_path, 'rb').read()) print("合并完成!!")download_path = r"/Users/xxxxxxxx/Desktop/Film/allts"hebing_path = r"/Users/xxxxxxxx/Desktop/Film/hebing/hebing.mp4"heBingTsVideo(download_path,hebing_path)
先上代码,第一次写原创博客,不知道怎么弄,┭┮﹏┭┮。编辑的文字被代码覆盖了!
本来打算是从页面上爬取并解析视频,参考链接(python m3u8视频ts解密合成完整mp4_FeelUps--The more U Give,The More U Have-CSDN博客_python 解密ts)然后下载,可我发现我没发现那个视频网站的视频规律就放弃了。于是选择直接用index1.m3u8文件里的ts文件名拼接下载链接,然后就能下载视频(参考链接:ts视频文件的爬取与合并_纯洁的小魔鬼-CSDN博客_ts文件抓取),我也成功了,但是视频居然有2000多个ts文件,十分钟我才下载了190个,顺便吐槽一下出租屋的wifi还不如我的热点快。具体怎么下载index.m3u8文件见第一个参考博客。今天很开心!