來自: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、資料庫、運維等。