爬取視頻的時(shí)候發(fā)現(xiàn),現(xiàn)在的視頻都是經(jīng)過加密(m3u8),不再是mp4或者avi鏈接直接在網(wǎng)頁顯示,都是經(jīng)過加密形成ts文件分段進(jìn)行播放。
今天就教大家如果通過python爬取下載m3u8加密視頻。
http://www.caisetv.com/
http://www.caisetv.com/dongzuopian/chaidanzhuanjia/0-1.html
在視頻播放的頁面,通過F12可以查看網(wǎng)絡(luò)數(shù)據(jù)包
https://xigua-cdn.haima-zuida.com/20210219/19948_fcbc225a/1000k/hls/index.m3u8
這里的ts就電影的加密分段視頻
https://xigua-cdn.haima-zuida.com/20210219/19948_fcbc225a/1000k/hls/
上面的m3u8鏈接掉index.m3u8后,在拼上075a34cccdd000000.ts等ts名稱就是分段視頻的鏈接
如下所示:
https://xigua-cdn.haima-zuida.com/20210219/19948_fcbc225a/1000k/hls/075a34cccdd000000.ts
通過瀏覽器把這個(gè)分段視頻下載后打開:
所以只要把所有的ts下載并合并就是完整的電影視頻!!!
剛剛已經(jīng)把ts的所有名稱下載下來了
接下來通過python代碼去讀取這個(gè)文件,提取出名稱,拼接鏈接后下載保存到一個(gè)文件夾里!
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',}
###下載ts文件
def download(url,name):
r=requests.get(url, headers=headers)
with open(name+"", "wb") as code:
code.write(r.content)
with open("index.m3u8","r") as f:
ts_list=f.readlines()
#去掉前面沒用的信息
ts_list=ts_list[5:]
urlheader="https://xigua-cdn.haima-zuida.com/20210219/19948_fcbc225a/1000k/hls/"
count=0
for i in ts_list:
if "#" not in i:
i=i.replace("\n","")
download(urlheader+""+i,"cdzj2/"+str(count)+".ts")
count=count+1
print(count)
這樣就可以把ts文件全部下載下來,但是一個(gè)一個(gè)下載很慢,下面通過多線程下載,提升下載速度!!!
for i in ts_list:
if "#" not in i:
i=i.replace("\n","")
n=i[-7:]
threading.Thread(target=download, args=(urlheader+""+i,"cdzj2/"+str(n),)).start()
#download(urlheader+""+i,"cdzj2/"+str(count)+".ts")
通過多線程很快就可以將這些ts文件下載到本地!!!
copy /b *.ts new.mp4
通過這個(gè)命令(cmd終端中運(yùn)行),在含有ts文件的文件夾中就可以將ts文件合并(按名稱順序進(jìn)行排列合并),并保存成new.mp4
1.分析m3u8加密文件
2.python下載ts文件
3.cmd合并ts保存成mp4格式
私信小編01即可獲取Python學(xué)習(xí)資料
(https://jx.618g.com/?url=)
import requests
url='https://jx.618g.com/?url=https://v.qq.com/x/cover/mzc00200lpxf8uq.html'
res=requests.get(url).text
print(res)
ffmpeg -i 'https://youku.cdn7-okzy.com/20191107/15684_c052aa3a/index.m3u8'-vcodec copy -acodec copy ship.mp4
requests的安裝:ctrl+R—>輸入cmd—.>pip install requests
ffmpeg的安裝:ctrl+R—>輸入cmd—.>pip install ffmpeg
如果出現(xiàn)拒絕訪問則用管理員模式運(yùn)行CMD。加載超市time read out 則采用換源安裝,我的下一篇文章會(huì)有介紹換源安裝,或者在pycharm的終端terminal下載,不過一般不會(huì)出現(xiàn)那么多問題,有問題想解決留言找我啊
You-Get 是一個(gè)命令行工具, 用來下載各大視頻網(wǎng)站的視頻, 是我目前知道的命令行下載工具中最好的一個(gè), 之前使用過 youtube-dl, 但是 youtube-dl 吧, 下載好的視頻是分段的, 然后程序還不自動(dòng)幫你合并, 后來遇到了 You-Get , 可以自動(dòng)合并, 最重要的是可以下載愛奇藝的視頻, 這是我唯一知道的可以下載愛奇藝視頻的工具. GitHub 主頁 : https://github.com/soimort/you-get
裝方法:
先安裝 Python3, 自行去 Python 官網(wǎng)下載去
安裝好 Python3 后, 在命令行中輸入pip3 install you-get
, 如果你只安裝了一個(gè)版本的 Python, 命令應(yīng)該是pip install you-get
升級(jí)方法:
pip3 install --upgrade you-get
, 同上, 只裝了 Python3 的應(yīng)為pip install --upgrade you-get
使用方法:
在命令行中切換到需要保存視頻的目錄
輸入you-get 視頻地址
, 例如you-get http://www.iqiyi.com/v_19rrktylpk.html
, 過一會(huì)就下載好了, 速度很快的.
注意事項(xiàng):
終止下載可以使用快捷鍵ctrl + C
, 繼續(xù)下載可以再次執(zhí)行you-get 剛才暫停的視頻地
You-Get的一些其他用法
You-Get僅用來下載視頻顯得有些大材小用了,作者也給出了You-Get的一些其他用法,這里著重介紹幾個(gè)。
1.選擇視頻下載格式和清晰度
通常網(wǎng)頁視頻的格式為.flv,但部分網(wǎng)站會(huì)提供好幾種視頻格式,我們可以使用You-Get下載這些視頻。
e.g.下載一段優(yōu)酷視頻
1.查看當(dāng)前視頻的清晰度和格式
you-get -i http://v.youku.com/v_show/id_XMTQ2NzQyMjY1Ng.html
2.選擇需要下載的清晰度及格式
you-get --format=hd2 http://v.youku.com/v_show/id_XMTQ2NzQyMjY1Ng.html
關(guān)注小編獲得更多python的玩法,評(píng)論獲取跳一跳輔助。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。