元旦放假前,老闆讓我下載一個視頻發給同事群看一下,仔細研究後發現騰訊視頻下載的都是QLV視頻文件。這種文件只能用騰訊播放器打開,難道讓我發視頻還要附帶個播放器?太麻煩了,想著最近在學習Python,就試了一下用Python下載騰訊視頻,並保存為MP4格式,說幹就幹,代碼擼起來!
1
流量分析
起初我想通過流量分析的方式反推出視頻原地址,由於涉及到JavaScript相關內容,弄了好久沒有結果。然後對視頻進行分析,發現騰訊視頻有個規律:
將大括號改成要下載視頻的vids,經requests請求後得到的內容包含原視頻地址所需的域名和key值,經過拼接,即視頻地址=url+key+vids.mp4,用這個地址就可以下載該視頻了。
下面我們以小豬佩奇的視頻為例
給大家詳細講訴一下過程
2
解析流量,找到隱含的地址
1).首先我們打開騰訊的視頻
比如小豬佩奇,可以看到它的vid是"b0020buglwx" ,既然找到了對應的下載的鏈接,我們就可以用request來模擬請求,然後構造對應的url,別忘記了替換vids。
2).深入分析json文件
然後我們打印出json文件,從裡面分析內容,找出隱含的key和url鏈接:
既然能找了這些真正有用的信息,如果提取的。不要忘記了,我們有萬能的正則表達式,輕鬆就可以搞定!
3).我們打印一下這個item看一下內容
正則表達式提取下載視頻url所需的內容以及視頻標題,並構造視頻下載地址video_url:
3
下載視頻
有了上面的視頻的真正的url之後,就可以非常輕鬆的下載下來。
用request庫按照stream模式下載,記得寫入文件時候用'ab'二進制追加模式進行寫入,最後完成之後記得用flush()函數清空緩衝區即可。
然後看一些我們的硬盤目錄,就會發現對應的視頻已經輕鬆下載完成了!是不是很簡單啊!其實整個代碼只有20行,大家可以動手練習一下!