scrapy實戰之爬取表情包

  • 2019 年 10 月 6 日
  • 筆記

前言:在之前我們學習了scrapy框架的基本使用, 今天我們通過實戰(爬取http://www.doutula.com的套圖)來更加了解scrapy框架額使用,僅以此來告別我們的爬蟲入門,後續會有一些反爬,驗證碼識別,數據分析的文章。下次我們就從基礎開始學習python,中間也有可能會穿插一些有趣的東西。來幫助我們學習python。

一、爬取表情包思路(http://www.doutula.com)

1、打開網站,點擊最新套圖

2、之後我們可以看到沒有套圖,我們需要提取每個套圖的連接

3、獲取連接之後,進入頁面提取圖片就好了

4、我們可以發現該網站還穿插有廣告,我們需要過濾點廣告

二、實戰

關於新建項目我們就不再多說了。不知道的可以看看以前文章。。。

1、首先我們提取第一頁的url

通過上圖我們可以發現我們想要的url全在class名為col-sm-9的div下,

紅色框的部分為廣告。不是a標籤,所以我們就不用過濾了。我們直接選取col-sm-9下的直接子節點即可

寫下如下程式碼:

值得注意的是在settings.py中需要添加頭資訊和將robots.txt協議修改為False

我們打上斷點調試一下:

我們發現我們想要的資訊已經提取出來了。

注意:在Request中的mate參數,是用來傳遞參數的,傳遞給下一個方法使用。使用方法和字典相似。

2、完善item

我們只需要三個欄位,什麼系列,圖片url,圖片名稱。

3、提取item中我們需要的欄位

4、下一頁

5、保存

因為對scrapy保存圖片沒有研究,所以就自己寫保存圖片的方法。

在pipelines.py種添加如下程式碼:

並且在settings.py中添加:

6、運行

直接報錯,因為有反扒機制,所以我們在settings.py添加頭資訊

運行一段時候後又報錯了,看來需要隨機更換表頭資訊。

這裡我們使用第三方庫很方便,pip3 install fake_useragent

安裝成功後我們在middlewares.py中導入:from fake_useragent import UserAgent

添加如下程式碼:

在settings.py文件中添加

即可

運行main文件:

即可。

小結:

效果圖:

問題:

在運行過程中遇到了四個問題:

1、沒有獲取大到圖片連接:

可能這個網站有兩個版本獲取的css方式不一樣。

解決方法:可以使用xpath中的|(或)來解決

2、沒有獲取到圖片名稱

解決方法:同上

3、圖片名稱相同

解決方法:可以使用md5加密後添加,你也可以使用你自己的方法

4、在圖片名中含有?/等非法字元

解決方法:可以通過正則過濾,如果md5加密,那麼一下解決兩個問題。

雖然有些圖片沒有獲取到,但是還是爬取了很多。

有興趣的可以嘗試去修改。

後台回復表情包獲取源程式碼和表情包。

完。