歡迎光臨
每天分享高質量文章

你還在付費愛奇藝VIP?神級程式員教你用Python任意下!

來自:Python3網絡爬蟲快速入門實戰解析 | Jack Cui

節選自:http://cuijiahua.com/blog/2017/10/spider_tutorial_1.html

本文僅用於學習參考~

本次案例代碼原作者已上傳至Github,點擊閱讀原文或複製文末鏈接至瀏覽器打開。

我相信如果看電影的都知道,不管是愛奇藝還是騰訊視頻還是優酷很多的電影電視都是需要VIP的,但是為了看這麼一個電視或者電影開個vip又不是很划算,小編今天教大家如何利用Python來下載VIP的視頻,這個方法還是挺實用的,希望能幫到那些喜歡看電視或者想學的Python的小伙伴們學習!案例說難也不難,對零基礎的小伙伴來講就可能相對來說有點難……

好了,廢話不多說。現在開始我們的實戰之旅吧!

實戰背景

愛奇藝的VIP視頻只有會員能看,普通用戶只能看前6分鐘。比如加勒比海盜5的URL:http://www.iqiyi.com/v_19rr7qhfg0.html#vfrm=19-9-0-1

http://api.xfsub.com/index.php?url=[播放地址或視頻id]

比如,對於繡春刀這個電影,我們只需要在瀏覽器地址欄輸入:

http://api.xfsub.com/index.php?url=http://www.iqiyi.com/v_19rr7qhfg0.html#vfrm=19-9-0-1

這樣,我們就可以在線觀看這些VIP視頻了:

我們可以看到,有用的請求並不多,我們逐條分析。我們先看第一個請求傳回的信息。

可以看到第一個請求是GET請求,沒有什麼有用的信息,繼續看下一條。

我們看到,第二條GET請求地址變了,並且在傳回的信息中,我們看到,這個網頁執行了一個POST請求。POST請求是啥呢?它跟GET請求正好相反,GET是從服務器獲得資料,而POST請求是向服務器發送資料,服務器再根據POST請求的引數,傳回相應的內容。這個POST請求有四個引數,分別為time、key、url、type。記住這個有用的信息,我們在抓包結果中,找一下這個請求,看看這個POST請求做了什麼。

這裡面存放的是什麼東西?不會視頻解析後的地址吧?我們有瀏覽器打開這個地址看一下:

果然,我們可以看到視頻地址近在眼前啊,URL如下:

http://disp.titan.mgtv.com/vod.do?fmt=4&pno;=1121&fid;=1FEA2622E0BD9A1CA625FBE9B5A238A6&file;=/c1/2017/09/06_0/1FEA2622E0BD9A1CA625FBE9B5A238A6_20170906_1_1_705.mp4

我們再打開這個視頻地址:

思路已經給出,希望喜歡爬蟲的人可以在運行下代碼之後,自己重頭編寫程式,因為只有經過自己分析和測試之後,才能真正明白這些代碼的意義。上述代碼運行結果如下:

我們已經順利獲得了mp4這個視頻檔案地址。根據視頻地址,使用 urllib.request.urlretrieve() 即可將視頻下載下來。編寫代碼如下:

urlretrieve()有三個引數,第一個url引數是視頻存放的地址,第二個引數filename是儲存的檔案名,最後一個是回呼函式,它方便我們查看下載進度。代碼量不大,很簡單,主要在於分析過程。代碼運行結果如下:

下載速度挺快的,幾分鐘視頻下載好了。

對於這個程式,感興趣的朋友可以進行擴展一下,設計出一個小軟體,根據用戶提供的url,提供PC在線觀看、手機在線觀看、視頻下載等功能。

總結

爬蟲時效性低,同樣的思路過了一個月,甚至一周可能無法使用,但是爬取思路都是如此,完全可以自行分析。

本次實戰代碼,均已上傳我的Github,歡迎Follow、Star:

https://github.com/Jack-Cherish/python-spider


●編號419,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

演算法與資料結構

更多推薦18個技術類公眾微信

涵蓋:程式人生、演算法與資料結構、黑客技術與網絡安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

赞(0)

分享創造快樂