Scrapy Redis分布式爬蟲元件

2022-10-08 21:06:15 字數 1639 閱讀 4532

scrapy是乙個框架,他本身是不支援分布式的。如果我們想要做分布式的爬蟲,就需要借助乙個元件叫做scrapy-redis,這個元件正是利用了redis可以分布式的功能,整合到scrapy框架中,使得爬蟲可以進行分布式。可以充分的利用資源(多個ip、更多頻寬、同步爬取)來提高爬蟲的爬行效率。

可以充分利用多台機器的頻寬。

可以充分利用多台機器的ip位址。

多台機器做,爬取效率更高。

分布式爬蟲是好幾臺機器在同時執行,如何保證不同的機器爬取頁面的時候不會出現重複爬取的問題。

同樣,分布式爬蟲在不同的機器上執行,在把資料爬完後如何保證儲存在同乙個地方。

通過pip install scrapy-redis即可安裝。

scrapy架構圖:

scrapy-redis架構圖:

分布式爬蟲架構圖:

以上兩個對比我們可以發現。item pipeline在接收到資料後傳送給了redisscheduler排程器排程資料也是從redis中來的、並且其實資料去重也是在redis中做的。

pycharm啟用碼教程使用更多解釋請見:

要將乙個scrapy專案變成乙個scrapy-redis專案只需修改以下三點就可以了:

將爬蟲的類從scrapy.spider變成scrapy_redis.spiders.redisspider;或者是從scrapy.crawlspider變成scrapy_redis.spiders.rediscrawlspider

將爬蟲中的start_urls刪掉。增加乙個redis_key="***"。這個redis_key是為了以後在redis中控制爬蟲啟動的。爬蟲的第乙個url,就是在redis中通過這個傳送出去的。

在配置檔案中增加如下配置:

# scrapy-redis相關配置

# 確保request儲存到redis中

scheduler = "scrapy_redis.scheduler.scheduler"

# 確保所有爬蟲共享相同的去重指紋

dupefilter_class = "scrapy_redis.dupefilter.rfpdupefilter"

# 設定redis為item pipeline

item_pipelines =

# 在redis中保持scrapy-redis用到的佇列,不會清理redis中的佇列,從而可以實現暫停和恢復的功能。

scheduler_persist = true

# 設定連線redis資訊

redis_host = '127.0.0.1'

redis_port = 6379

執行爬蟲:在爬蟲伺服器上。進入爬蟲檔案所在的路徑,然後輸入命令:scrapy runspider [爬蟲名字]

scrapy,redis分布式爬取貓眼電影!

能夠利用redis快取資料庫的優點去重來避免資料的大面積冗餘 1 首先就是要建立貓眼爬蟲專案 2 進入專案內部建立乙個爬蟲檔案 建立完檔案之後就是要爬取的內容,我這邊以爬取貓眼電影的title和link為例 這個完全看個人你可以先去寫爬蟲,然後再來寫items檔案 3 編寫item檔案 python...

10 給予scrapy redis的分布式爬蟲

pip install scrapy redis scrapy redis提供了兩種爬蟲 from scrapy redis.spiders import redisspider class myspider redisspider spider that reads urls from redis...

scrapy redis分布式爬蟲

依賴環境 scrapy 1.1 redis 2.8 分布式爬蟲 將乙個專案拷貝到多台電腦上,同時爬取資料。1.必須保證所有電腦上的 是相同的配置。2.在其中一台電腦上啟動redis和mysql的資料庫服務。3.同時將所有的爬蟲專案執行起來。4.在啟動redis和mysql資料庫的電腦上,向redis...