天天看點

40行代碼教你利用Python網絡爬蟲批量抓取小視訊

/1 前言/

還在為線上看小視訊緩存慢發愁嗎?還在為想重新回味優秀作品但找不到資源而憂慮嗎?莫要慌,讓python來幫你解決,40行代碼教你爬遍小視訊網站,先批量下載下傳後仔細觀看,豈不美哉!

/2 整理思路/

這類網站一般大同小異,本文就以鳳凰網新聞視訊網站為例,采用倒推的方式,給大家介紹如何通過流量分析獲得視訊下載下傳的url,進而批量下載下傳。

/3 操作步驟/

/3.1 分析網站,找出網頁變化規律/

1、首先找到網頁,網頁詳情如下圖所示。

2、該視訊網站分為人物、娛樂、藝術等不同類型,本文以體育版塊為例,下拉到底端,如下圖所示。

3、根據上圖的結果,我們可以發現該網站是動态網頁,打開浏覽器自帶流量分析器,點選加載更多,找出網頁變化規律,第一個就是,請求網址和傳回結果如下圖。标記處為頁碼,此時是第3頁。

4、傳回結果包含視訊的title、網頁url、guid(相當于每個視訊的标志,後續有用)等資訊,如下圖所示。

5、每個網頁裡邊包含24個視訊,列印出來是這樣的,如下圖所示。

/3.2 尋找視訊網頁位址規律/

1、先打開流量分析器,播放視訊進行抓包,找到幾個mp2t檔案,如下圖所示。

2、它們的網址我依次找了出來,放到文本檔案中存放起來,以發現它們之間的規律,如下圖所示。

3、大家發現規律了嗎?網址中的p26275262-102-9987636-172625參數就是視訊的guid(上述已經得到),隻有range_bytes參數是變化的,而且是從0到6767623,很顯然這是視訊的大小,而且視訊是分段合成的。找到這些規律之後,接下來我們需要繼續進行細挖視訊位址的出處。

/3.3 尋找視訊的下載下傳原始位址/

1、先考慮一個問題,視訊的位址是從哪來的呢?一般情況下,先在視訊網頁裡看看有沒有,如果沒有,我們就在流量分析器裡,沿着第一個分段視訊往上找,肯定是有某個網址傳回了這些資訊,很快,我在1個vdn.apple.mpegurl檔案裡發現了下圖這個。

2、太驚喜了,這不就是我們要找的資訊麼,再看看它的url參數,如下圖所示。

3、上圖參數看起來很多的樣子,不過不用怕。還是利用老辦法,先在網頁裡看看有沒有,沒有的話還在流量分析器裡往上找,功夫不負有心人,我找到了下圖這個。

4、它的url如下圖所示。

5、仔細找找規律,我們發現唯一需要變化的就是每個視訊的guid了,這個第一步已經得到了。另外,傳回結果包含了上述除了vkey的所有參數,而且這個參數最長,那該怎麼辦呢?

6、不要慌,萬一這個參數沒有用呢,先把vkey去掉試一試。果不其然,果然沒有什麼用,現在整個過程已經捋順了,現在可以撸代碼了。

/3.4 代碼實作/

1、在代碼裡邊,設定多線程下載下傳,如下圖所示,其中頁碼可以自己進行修改哈。

2、解析傳回參數,json格式的,使用json庫進行處理,如下圖所示。通過解析,我們可以得到每個視訊的title、網頁url、和guid。

3、模拟請求,獲得除Vkey外的參數,如下圖所示。

4、利用上一步中的參數,進行模拟請求,獲得包含分段視訊的資訊,如下圖所示。

5、将分段視訊合并,儲存在1個視訊檔案,并以title命名,如下圖所示。

/3.5 效果呈現/

1、當程式運作之後,我們便可以看到網頁中的視訊嘩啦嘩啦的在本地檔案夾中進行呈現,如下圖所示。接下來,媽媽再也不用擔心我喜歡的視訊找不着了,真香!

當然了,如果想更加直覺的話,可以在代碼中加入維測資訊,這個大家可以自己手動設定一下。

/4 總結/

本文主要基于Python網絡爬蟲,利用40行代碼,針對小視訊網頁,進行批量擷取網頁視訊到本地。方法簡單易行,而且行之有效,歡迎大家踴躍嘗試。如果想擷取本文代碼,請zhi姐通路

https://github.com/cassieeric/python_crawler/tree/master/little_video_crawler

,即可擷取代碼連結,如果覺得不差,記得給個star噢。