<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
當我們在網頁播放視訊時,網頁向伺服器發起一個以.m3u8結尾的連線請求,伺服器會將具體的.ts檔案連結路徑傳送給網頁,網頁接收這寫連結路徑,並向這些連結傳送請求,請求到的資源就是.ts視訊檔,他和我們常見的mp4檔案只是封裝格式的不同,而且.ts檔案的大小很小,我爬取的.ts檔案只有六秒的視訊檔。之後網頁將這些.ts檔案整合在一起並進行播放。
python3.8、win 10
python要做的事情
1、選擇可以爬取的視訊網站
2、獲取.m3u8的URL路徑
3、通過requests.get獲取.ts檔案路徑
4、儲存.ts檔案
5、合併.ts檔案為mp4格式
1、視訊網站:https://www.3s8m.com/
2、隨便選擇一個視訊進入播放頁面,按下F12或者Fn+F12,開啟審查元素,選擇網路,重新整理頁面,暫停視訊,在審查元素的網路頁面選擇XHR(沒有可以直接在全部搜尋m3u8),找到以m3u8結尾的封包,點選獲取URL
3、python 編寫程式碼請求該URL,列印返回的資料;程式碼如下
import requests url = 「用第二部找到的URL填入」 results = requests.get(url) #傳送get請求 results.encoding=「utf8」 #設定編碼格式,從網頁原始碼中的head中可以看編碼格式,這步不關鍵 print(results.text) #列印結果 results.close() #關閉
4、可以發現第3步中列印結果有很多URL地址,這些地址就是ts檔案的地址,python下載ts檔案
import request url =「填入獲取到的ts檔案的URL」 results = requests.get(url) results.encoding =「utf8」 with open("./a.ts",「wb」) as file: file.write(results.content) results.close()
5、合併全部的ts檔案,呼叫python的os庫,使用系統命令(copy /b a.ts+b.ts a.mp4)進行合併
import os os.system(「copy /b a.ts+b.ts a.mp4」)
1、上述是通過手動查詢獲取的m3u8地址,那麼為什麼不用python去爬取,如果用python去爬取那麼就需要對爬取的內容進行分析檢索,我使用正則進行檢索,也可以用xpath、bs4等方式進行檢索。
2、一個m3u8地址會對應多個ts檔案地址,我們應該對同一個m3u8的ts地址進行整體儲存,下載後進行整合在一起變為一個m3u8對應一個視訊
3、我們在瀏覽上述提供的網站時會發現,有些資源有不通播放源,有些版源不能用,那麼我們在進行檢索的時候可以多加一個進行源切換的操作
4、至於儲存的檔名、檔案路徑這些自己返回,具體的程式碼下面會提供一個參考。
使用程式碼的前提條件及說明:
1、在程式碼檔案的目錄下建一個名為ts_path的資料夾用於儲存爬取過程中的臨時檔案(.ts檔案)
2、儲存的視訊會存放與程式碼檔案同一目錄線下,視訊名稱為 集數.mp4
3、視訊下載完,ts_path中的檔案需要手動刪除,由於之前使用os.system進行刪除,誤刪了我不少原始碼,決定不加刪除程式碼防止意外
4、程式碼只是用與上述提供的網站,其他網站需要自己進行修改
import requests import re import os URL = "輸入URL" #視訊URL resources = 0 #播放源選擇 episode_urls = [] #存放章節URL episode_names = [] #存放章節名稱 m3u8_urls = [] #存放ts檔案的URL def get_episode(URL,resources): #獲取章節名和路徑 results = requests.get(URL) results.encoding = "utf-8" all = results.text results.close() episode = re.findall('<ul class="dslist-group">.*?</ul>', all, flags=re.S) b = re.finditer('href=".*?</a>', episode[resources],flags=re.S) for i in b: i = i[0].replace('href="', "").replace('"', "") episode_urls.append("https://www.3s8m.com" + i.split('>', 1)[0]) episode_names.append(i.split('>', 1)[1].replace("</a>", "")) print(episode_names) print(episode_urls) def get_ts(episode_urls): #獲取ts檔案路徑 for i in episode_urls: results = requests.get(i) results.encoding = "utf8" results = re.search('https:.*?.m3u8', str(results.text),flags=re.S) m3u8_urls.append(results[0].replace("\", "")) print(m3u8_urls) def download_video(episode_names, m3u8_urls): #下載ts檔案並整合為mp4檔案 for i in range(len(m3u8_urls)): try: print(m3u8_urls[i]) results = requests.get(m3u8_urls[i]) results.encoding = "utf8" all = re.finditer("https://.*?#", results.text, flags=re.S) results.close() cmd = [] n = 0 for j in all: n += 1 ts_url = j[0].replace("n#", "") cmd.append(f'{n}.ts') results = requests.get(ts_url,) results.encoding = "utf8" with open(f"./ts_path/{n}.ts", "wb") as file: file.write(results.content) results.close() print(f"{n}.ts 下載完成") os.chdir("ts_path") if ("ts_path" in os.getcwd()): cmd = "+".join(cmd) cmd = f"copy /b {cmd} {episode_names[i]}.mp4" os.system(cmd) os.system(f"move {episode_names[i]}.mp4 ../") os.chdir("../") print(f"{episode_names[i]}.mp4 下載成功") except Exception as e: print(e) exit(0) if __name__ == '__main__': get_episode(URL, resources) get_ts(episode_urls) download_video(episode_names, m3u8_urls)
到此這篇關於利用python爬取m3u8格式視訊的文章就介紹到這了,更多相關python爬取m3u8格式視訊內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45