天天看點

python爬取圖檔_用Python爬取知乎妹子圖檔

用Python爬取知乎妹子圖檔

這次呢,筆者給大家分享的是爬取知乎的妹子圖,嗯,你懂的。

python爬取圖檔_用Python爬取知乎妹子圖檔

話不多說,直接看戰果。

python爬取圖檔_用Python爬取知乎妹子圖檔
python爬取圖檔_用Python爬取知乎妹子圖檔

嗯,還是很不錯的,值得我們去爬取。下面說一下整個過程的實作。

頁面分析

本次爬取的是知乎話題下所有回答的所有圖檔,如下

python爬取圖檔_用Python爬取知乎妹子圖檔

我們可以看到這個話題有

811

個回答,是以呢,爬取的圖檔也是很多的,共爬取了

1996

張圖檔。

我們知道我們要爬取的是圖檔,然後圖檔呢是嵌套在内容當中的,是以我們隻要能找到怎麼擷取到内容,就能将圖檔爬取下來。

我們按f12進行開發者模式,在右邊的name中找到了answers為開頭的名。

python爬取圖檔_用Python爬取知乎妹子圖檔

通過英文名字,我們猜測這個可能就是我們要找的内容,打開右邊的Request URL,看到了一大堆資料,包括id,使用者名,當然,也包含我們要找的内容。如果感覺看不清這些資料,可以放到 線上json校驗工具進行解析。可以看到,裡面有個content屬性,裡面就是使用者回答的内容,圖檔的連結就包括在裡面。

python爬取圖檔_用Python爬取知乎妹子圖檔

現在呢,我們知道要怎麼擷取資料了,但還有一個問題,就是怎麼爬取全部使用者的回答内容,因為剛才的連結隻能取到前3個使用者的回答。通過連結我們發現裡面有兩個參數可以改變,分别是offset和limit,通過英文單詞可以知道前者是指偏移量,即查詢的資料從哪一個回答開始,後者是最多展示的回答數量。是以呢,會點英語還是挺重要的。

然後筆者通過試驗,發現了limit最大是20,是以我們隻要改變offset就行,limit固定為20。

代碼爬取

首先就是要獲得所有頁面資料的url

python爬取圖檔_用Python爬取知乎妹子圖檔

之後我們通過json解析和正規表達式比對獲得圖檔的url

python爬取圖檔_用Python爬取知乎妹子圖檔

最後就是将二進制資料寫進圖檔中,即下載下傳圖檔

python爬取圖檔_用Python爬取知乎妹子圖檔

之後運作,等待了漫長的時間,終于下載下傳完了。如圖,用了1467秒,20幾分鐘。

python爬取圖檔_用Python爬取知乎妹子圖檔

這個過程感覺太久了,是以改了一下程式,用多線程下載下傳。

python爬取圖檔_用Python爬取知乎妹子圖檔

加上上述代碼就行。

python爬取圖檔_用Python爬取知乎妹子圖檔

如上,快了好幾倍。

繼續閱讀