20行Python代碼爬取視頻

元旦放假前,老闆讓我下載一個視頻發給同事群看一下,仔細研究後發現騰訊視頻下載的都是QLV視頻文件。這種文件只能用騰訊播放器打開,難道讓我發視頻還要附帶個播放器?太麻煩了,想著最近在學習Python,就試了一下用Python下載騰訊視頻,並保存為MP4格式,說幹就幹,代碼擼起來!


20行Python代碼爬取視頻

1

流量分析


起初我想通過流量分析的方式反推出視頻原地址,由於涉及到JavaScript相關內容,弄了好久沒有結果。然後對視頻進行分析,發現騰訊視頻有個規律:

20行Python代碼爬取視頻


將大括號改成要下載視頻的vids,經requests請求後得到的內容包含原視頻地址所需的域名和key值,經過拼接,即視頻地址=url+key+vids.mp4,用這個地址就可以下載該視頻了。


下面我們以小豬佩奇的視頻為例

給大家詳細講訴一下過程

20行Python代碼爬取視頻


20行Python代碼爬取視頻

2

解析流量,找到隱含的地址

1).首先我們打開騰訊的視頻

比如小豬佩奇,可以看到它的vid是"b0020buglwx" ,既然找到了對應的下載的鏈接,我們就可以用request來模擬請求,然後構造對應的url,別忘記了替換vids。

20行Python代碼爬取視頻


2).深入分析json文件

然後我們打印出json文件,從裡面分析內容,找出隱含的key和url鏈接:

20行Python代碼爬取視頻


既然能找了這些真正有用的信息,如果提取的。不要忘記了,我們有萬能的正則表達式,輕鬆就可以搞定!

20行Python代碼爬取視頻


3).我們打印一下這個item看一下內容

20行Python代碼爬取視頻


正則表達式提取下載視頻url所需的內容以及視頻標題,並構造視頻下載地址video_url:

20行Python代碼爬取視頻


20行Python代碼爬取視頻

3

下載視頻


有了上面的視頻的真正的url之後,就可以非常輕鬆的下載下來。

20行Python代碼爬取視頻

用request庫按照stream模式下載,記得寫入文件時候用'ab'二進制追加模式進行寫入,最後完成之後記得用flush()函數清空緩衝區即可。


然後看一些我們的硬盤目錄,就會發現對應的視頻已經輕鬆下載完成了!是不是很簡單啊!其實整個代碼只有20行,大家可以動手練習一下!


分享到:


相關文章: