1. 程式人生 > >千萬不要學習web前端開發,因為......

千萬不要學習web前端開發,因為......

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

640?wx_fmt=jpeg

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

實戰背景

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

640?wx_fmt=jpeg

640?wx_fmt=jpeg

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視訊了:

640?wx_fmt=jpeg

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

果然,我們可以看到視訊地址近在眼前啊,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

我們再開啟這個視訊地址:

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

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

640?wx_fmt=gif

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

640?wx_fmt=jpeg

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

總結

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

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

http://cuijiahua.com/blog/2017/10/spider_tutorial_1.html

公眾號內回覆“1”帶你進粉絲群640?wx_fmt=gif