天天看點

scrapy-Redis 分布式爬蟲

抓取大量資料是時,一個機器爬取過于緩慢,是以需要多台機器一起進行爬取。

1. 使用scrapy架構搭建爬蟲項目

建立爬取B站視訊資訊的scrapy爬蟲項目

  1. middlewares.py檔案

    設定中間件,定義随機的IP代理

    防止B站的IP屏蔽處理

scrapy-Redis 分布式爬蟲
scrapy-Redis 分布式爬蟲

2 pipeline.py檔案

設定連接配接的資料庫,儲存采集資料,資料庫的屬性在settings檔案設定。

scrapy-Redis 分布式爬蟲

3 settings.py檔案

scrapy項目的一般設定

scrapy-Redis 分布式爬蟲
scrapy-Redis 分布式爬蟲
scrapy-Redis 分布式爬蟲
scrapy-Redis 分布式爬蟲
scrapy-Redis 分布式爬蟲

2.開發爬蟲

scrapy-Redis 分布式爬蟲

重寫start_requests函數,實作生成起始路由清單

将得到資料由parse解析,傳遞給管道儲存。

3. 現在開始将這個scrapy項目進行簡單改成scrapy-redis分布式爬蟲

1 settings檔案設定

scrapy-Redis 分布式爬蟲

這裡是将排程器采用scrapy-redis庫的排程,舍棄原本架構自己的,有Redis資料庫實作,也是為了實作多個爬蟲項目使用同一個排程器,實作Redis資料庫統一排程。

2 更改爬蟲檔案

scrapy-Redis 分布式爬蟲

1.引入scrapy-redis的爬蟲類

2. 将爬蟲繼承scrapy-redis的爬蟲類

3. 将start-urls舍去,改為redis-key,起始爬蟲路由是由Redis資料庫輸入。

4. 新的路由由函數處理後産生。

3 啟動爬蟲

*1. 啟動MongoDB資料庫

mongod –dbpath 資料庫路徑。

*2.啟動Redis資料庫

進入資料庫位置,進入cmd指令行(此處為Windows上)

redis-server.exe redis.windows.conf

*3.Redis資料庫用戶端連接配接

redis-cli.exe

*4. 啟動scrapy-redis分布式爬蟲項目

啟動多個項目後,所有項目進入等待,等待使用者從Redis推入起始路由。

*5.推入起始路由,爬蟲開始運作

lpush myspider:start_urls 起始網頁位址

爬蟲開始運作。

scrapy-Redis 分布式爬蟲