/1 前言/python
還在爲在線看小視頻緩存慢發愁嗎?還在爲想從新回味優秀做品但找不到資源而憂慮嗎?莫要慌,讓python來幫你解決,40行代碼教你爬遍小視頻網站,先批量下載後仔細觀看,豈不美哉!git
/2 整理思路/github
這類網站通常大同小異,本文就以鳳凰網新聞視頻網站爲例,採用倒推的方式,給你們介紹如何經過流量分析得到視頻下載的url,進而批量下載。json
/3 操做步驟/瀏覽器
/3.1 分析網站,找出網頁變化規律/緩存
一、首先找到網頁,網頁詳情以下圖所示。網絡
二、該視頻網站分爲人物、娛樂、藝術等不一樣類型,本文以體育版塊爲例,下拉到底端,以下圖所示。多線程
三、根據上圖的結果,咱們能夠發現該網站是動態網頁,打開瀏覽器自帶流量分析器,點擊加載更多,找出網頁變化規律,第一個就是,請求網址和返回結果以下圖。標記處爲頁碼,此時是第3頁。app
四、返回結果包含視頻的title、網頁url、guid(至關於每一個視頻的標誌,後續有用)等信息,以下圖所示。ide
五、每一個網頁裏邊包含24個視頻,打印出來是這樣的,以下圖所示。
/3.2 尋找視頻網頁地址規律/
一、先打開流量分析器,播放視頻進行抓包,找到幾個mp2t文件,以下圖所示。
二、它們的網址我依次找了出來,放到文本文件中存放起來,以發現它們之間的規律,以下圖所示。
三、你們發現規律了嗎?網址中的p26275262-102-9987636-172625參數就是視頻的guid(上述已經獲得),只有range_bytes參數是變化的,並且是從0到6767623,很顯然這是視頻的大小,並且視頻是分段合成的。找到這些規律以後,接下來咱們須要繼續進行細挖視頻地址的出處。
/3.3 尋找視頻的下載原始地址/
一、先考慮一個問題,視頻的地址是從哪來的呢?通常狀況下,先在視頻網頁裏看看有沒有,若是沒有,咱們就在流量分析器裏,沿着第一個分段視頻往上找,確定是有某個網址返回了這些信息,很快,我在1個vdn.apple.mpegurl文件裏發現了下圖這個。
二、太驚喜了,這不就是咱們要找的信息麼,再看看它的url參數,以下圖所示。
三、上圖參數看起來不少的樣子,不過不用怕。仍是利用老辦法,先在網頁裏看看有沒有,沒有的話還在流量分析器裏往上找,功夫不負有心人,我找到了下圖這個。
四、它的url以下圖所示。
五、仔細找找規律,咱們發現惟一須要變化的就是每一個視頻的guid了,這個第一步已經獲得了。另外,返回結果包含了上述除了vkey的全部參數,並且這個參數最長,那該怎麼辦呢?
六、不要慌,萬一這個參數沒有用呢,先把vkey去掉試一試。果不其然,果真沒有什麼用,如今整個過程已經捋順了,如今能夠擼代碼了。
/3.4 代碼實現/
一、在代碼裏邊,設置多線程下載,以下圖所示,其中頁碼能夠本身進行修改哈。
二、解析返回參數,json格式的,使用json庫進行處理,以下圖所示。經過解析,咱們能夠獲得每一個視頻的title、網頁url、和guid。
三、模擬請求,得到除Vkey外的參數,以下圖所示。
四、利用上一步中的參數,進行模擬請求,得到包含分段視頻的信息,以下圖所示。
五、將分段視頻合併,保存在1個視頻文件,並以title命名,以下圖所示。
/3.5 效果呈現/
一、當程序運行以後,咱們即可以看到網頁中的視頻嘩啦嘩啦的在本地文件夾中進行呈現,以下圖所示。接下來,媽媽不再用擔憂我喜歡的視頻找不着了,真香!
固然了,若是想更加直觀的話,能夠在代碼中加入維測信息,這個你們能夠本身手動設置一下。
/4 總結/
本文主要基於Python網絡爬蟲,利用40行代碼,針對小視頻網頁,進行批量獲取網頁視頻到本地。方法簡單易行,並且行之有效,歡迎你們踊躍嘗試。若是想獲取本文代碼,請zhi姐訪問https://github.com/cassieeric/python_crawler/tree/master/little_video_crawler,便可獲取代碼連接,若是以爲不差,記得給個star噢。