利用Python爬取攝影網站圖片,切勿商用

嬌兮心有之發表於2018-12-18

今天我們繼續爬取一個網站,這個網站為 http://image.fengniao.com/ ,蜂鳥一個攝影大牛聚集的地方,本教程請用來學習,不要用於商業目的,不出意外,蜂鳥是有版權保護的網站。

Python學習資料或者需要程式碼、視訊加Python學習群:960410445

2. 網站分析

第一步,分析要爬取的網站有沒有方法爬取,開啟頁面,找分頁

http://image.fengniao.com/index.php?action=getList&class_id=192⊂_classid=0&page=1¬_in_id=5352384,5352410http://image.fengniao.com/index.php?action=getList&class_id=192⊂_classid=0&page=2¬_in_id=5352384,5352410http://image.fengniao.com/index.php?action=getList&class_id=192⊂_classid=0&page=3¬_in_id=5352384,5352410http://image.fengniao.com/index.php?action=getList&class_id=192⊂_classid=0&page=4¬_in_id=5352384,5352410

上面的頁面發現一個關鍵的引數 page=1 這個就是頁碼了,但是另一個比較頭疼的問題是,他沒有最後的頁碼,這樣我們沒有辦法確定迴圈次數,所以後面的程式碼編寫中,只能使用 while 了

這個地址返回的是JSON格式的資料,這個對爬蟲來說,非常友好!省的我們用正規表示式分析了。

分析這個頁面的標頭檔案,查閱是否有反爬措施

發現除了HOST和User-Agent以外,沒有特殊的點,大網站就是任性,沒啥反爬,可能壓根不在乎這個事情。

第二步,分析圖片詳情頁面,在我們上面獲取到的JSON中,找到關鍵地址

關鍵地址開啟之後,這個地方有一個比較騷的操作了,上面圖片中標註的URL選的不好,恰好是一個文章了,我們要的是組圖,重新提供一個新連結 http://image.fengniao.com/slide/535/5352130_1.html#p=1

開啟頁面,你可能直接去找規律了,找到下面的一堆連結,但是這個操作就有點複雜了,我們查閱上述頁面的原始碼

http://image.fengniao.com/slide/535/5352130_1.html#p=1http://image.fengniao.com/slide/535/5352130_1.html#p=2http://image.fengniao.com/slide/535/5352130_1.html#p=3....

網頁原始碼中發現了,這麼一塊區域

大膽的猜測一下,這個應該是圖片的JSON,只是他列印在了HTML中,我們只需要用正規表示式進行一下匹配就好了,匹配到之後,然後進行下載。

第三步,開始擼程式碼。

3. 寫程式碼


上面的連結已經生成,下面就是下載圖片了,也非常簡單


程式碼走起,結果

相關文章