Python爬蟲下手,就得從高清美圖開始!附教程

寫在前面

前幾天玩遊戲時,lol盒子右下角有條廣告,

廣告大概這個樣子

伸手黨請戳文章尾部


Python爬蟲下手,就得從高清美圖開始!附教程

咦,小姐姐,還有cosplay,點進去看看。

哇,發現一個好玩的網站,好多漂亮的妹子,頁面打開很流暢,點開後有的瀏覽頁面還有好聽的音樂,產品體驗極佳。

Python爬蟲下手,就得從高清美圖開始!附教程


Python爬蟲下手,就得從高清美圖開始!附教程

不過每組圖片只能看前幾張圖,後面的圖只能看到縮略圖,如果想繼續看或者打包下載得花銀子,通常要1-5rmb。

Python爬蟲下手,就得從高清美圖開始!附教程

ctrlC+ctrlV幾張後不樂意了,這麼保存一來看不到全部圖片,二來,麻煩,太麻煩了。

俗話說,妹子是第一生產力,魯迅有云,懶人創造美好世界。

項目編寫

試試吧,看能不能發現點有趣的東東。首先習慣性的看看html源碼,blabla一堆,頭大,pass。

Python爬蟲下手,就得從高清美圖開始!附教程

從頁面源碼來看,頁面應該是前端渲染出來的,直接解析爬蟲爬的話會比較麻煩。既然是前端渲染,那再看看請求吧,首頁肯定是加載相冊列表,沒啥大用處,直接看加載具體某一相冊的請求結果,點開某一相冊,跳過圖片,看看有沒有什麼可用的接口,果然有。

Python爬蟲下手,就得從高清美圖開始!附教程

複製出來,瀏覽器走起,請求後返回如下信息

Python爬蟲下手,就得從高清美圖開始!附教程

很明顯是該相冊的詳細信息獲取接口,可是怎麼有些像是被編碼過的東西。既然被編碼了,解碼出來瞧瞧,postman走起。postman順利解析出結果

Python爬蟲下手,就得從高清美圖開始!附教程

上下翻翻看,發現了一個神奇的鏈接,是個zip壓縮包,嗯,有點意思。

Python爬蟲下手,就得從高清美圖開始!附教程

下載回來解壓,哈哈,居然是該相冊的所有照片。

Python爬蟲下手,就得從高清美圖開始!附教程

看返回的結果,很明顯使用了jsonp,於是接著試著減少參數,去除了返回結果中惱人的無用回掉前綴,最後簡化到僅剩一個參數,id,這接口太呆萌了。

Python爬蟲下手,就得從高清美圖開始!附教程

此外還發現了網頁上音樂的地址。

Python爬蟲下手,就得從高清美圖開始!附教程

至此該網站的“核心資產”已經被扒的底褲都沒了,下面開始批量爬吧。

爬蟲思路

有兩種思路,一種是利用主頁調用的獲取相冊列表參數接口來獲得相冊列表再通過列表爬壓縮包地址,另外一種是直接從1開始依次嘗試到首頁最新的一個相冊對應的id。最終決定採用第二種思路,因為這樣即使首頁隱藏的相冊通過這種方式也能被發現。

開搞,建數據庫,數據表,為方便後續追加執行,以及放在服務器上爬,所以採用springboot配合異步調用來實現。一開始使用post方式進行調用,結果嘗試抓取了一兩百條後到數據庫一看,怎麼這麼多重複的啊,而且怎麼同一個id和我用postman直接調得到的結果不一致?很可能開反爬了。

轉變思路,postman採用的是get方式,所以程序試試也使用get方式進行調用,同時加入線程隨機睡眠時間和User-Agent請求頭,以此模擬普通用戶的瀏覽器訪問行為。bingo,順利的抓取到了正確的圖包名稱、下載地址地址、音樂名稱、音樂下載地址等信息。

Python爬蟲下手,就得從高清美圖開始!附教程

扔服務器上爬吧。等了大概十幾分鍾,爬完後總共獲取到892條有效的圖包記錄,202條有效的音樂記錄。

Python爬蟲下手,就得從高清美圖開始!附教程


Python爬蟲下手,就得從高清美圖開始!附教程

爬到地址後可不能算結束,還得把真正的壓縮包都下載回來,寫個批量下載的方法,服務器走起,然後便開始吭哧吭哧的下載,速度還行,能接近7MB/S。

Python爬蟲下手,就得從高清美圖開始!附教程


Python爬蟲下手,就得從高清美圖開始!附教程

從上午11點開始到晚上9點下載完成,總共耗時10個小時,從服務器上全部下載回來吧。

Python爬蟲下手,就得從高清美圖開始!附教程


Python爬蟲下手,就得從高清美圖開始!附教程

經過漫長的等待後,終於下載完,寫了個腳本統計結果,最終:總共獲取到了46187張圖片,大小36.5GB。

Python爬蟲下手,就得從高清美圖開始!附教程

項目效果圖:

Python爬蟲下手,就得從高清美圖開始!附教程

寫在最後

看完文章心動的小夥伴關注、轉發,私信“資料”即可免費獲取全套的python自學視頻課程哦,學完以後萬物皆可爬~

加油!!!!

30天Python 學習計劃,供大家參考。

第1天

Python簡介 - Python的歷史 / Python的優缺點 / Python的應用領域

Python環境搭建

第2天

使用python解釋器

關於python語法的簡單介紹

第3天

詞法結構

運算符和表達式

第4天

python數據結構 列表/字符串/元組

第5天

python數據結構 字典/集合

第6天

python流程控制1

if語句

for循環

while循環

第7天

python流程控制2

continue語句

break語句

pass語句

第8~9天

格式化字符串

讀寫文件

第10~12天

python函數

Lambda 表達式

編碼風格

第13天

python模塊

第14天

迭代器

生成器

生成器表達式

第15~16天

錯誤和異常

第17~19天

面向對象編程

第19~20天

標準庫使用

日期和時間

數學

操作系統接口

第21天

安裝 Python 模塊

第22~23天

虛擬環境和包

第24天

多線程

第25~30天

訓練題

與之配套的清華畢業生415集Python視頻教程:

由北京尚學堂高淇老師親自錄製,415集Python全棧入門到精通的Python全套+前端+4個實戰項目,第2季已經新鮮出爐了!小夥伴們快快領取學習吧!

獲取方式:轉發此文+關注 並 私信小編 “ 資料 ”,即可免費獲取!


Python爬蟲下手,就得從高清美圖開始!附教程


Python爬蟲下手,就得從高清美圖開始!附教程


Python爬蟲下手,就得從高清美圖開始!附教程


Python爬蟲下手,就得從高清美圖開始!附教程

獲取方式:轉發此文+關注 並 私信小編 “ 資料 ”,即可免費獲取!


分享到:


相關文章: