分布式爬蟲

2021-07-04 21:59:57 字數 2161 閱讀 1105

乙個基於scrapy-redis的分布式爬蟲模板,在scrapy-redis自帶的example的基礎上進行修改,新增在實際爬取過程中大部分爬蟲可能用到的功能,使的構建分布式爬蟲更加的簡單。

scrapy-redis:

windows

ubuntu

$sudo apt-get install redis-server
redis圖形化管理

推薦使用pip安裝

$pip install scrapy-redis
github轉殖倉庫,轉殖成功即可得到乙個可以執行的爬蟲,該爬蟲預設已經配置好了redis,worker以及使用者**等功能

$ git clone 

kdf5000/rspider.git

配置scrapy-redisscrapy-redis的所有配置到放在setting.py的特定位置,如下面所示,每個配置項代表什麼意思注釋已經詳細的說明,不需要過多解釋,如果不想使用scrapy-redis將所有配置項注釋掉即可

# 修改scrapy預設的排程器為scrapy重寫的排程器 啟動從reids快取讀取佇列排程爬蟲

scheduler = "scrapy_redis.scheduler.scheduler"

# 排程狀態持久化,不清理redis快取,允許暫停/啟動爬蟲

scheduler_persist = true

# 請求排程使用優先佇列(預設)

#scheduler_queue_class = 'scrapy_redis.queue.spiderpriorityqueue'

# 請求排程使用fifo佇列

#scheduler_queue_class = 'scrapy_redis.queue.spiderqueue'

# 請求排程使用lifo佇列

#scheduler_queue_class = 'scrapy_redis.queue.spiderstack'

# 最大的空閒時間,避免分布式爬取得情況下爬蟲被關閉

# 此設定只適用於spiderqueue和spiderstack

# 也是爬蟲第一次啟動時的等待時間(應為佇列是空的)

#scheduler_idle_before_close = 10

# 儲存爬取到的item,一定要在所有的pipeline最後,即設定對應的數字大於其他pipeline

item_pipelines =

# 指定redis的位址和埠(可選,程式將使用預設的位址localhost:6379)

redis_host = 'localhost'

redis_port = 6378

# 宣告redis的url位址(可選)

# 如果設定了這一項,則程式會有限採用此項設定,忽略redis_host 和 redis_port的設定

#redis_url = 'redis://user:pass@hostname:9001'

配置graphite安裝graphite

目前graphite不支援windows,所以使用windows的使用者要麼在自己電腦搭個虛擬環境,要麼在一台可以訪問的linux主機搭建該服務。如果有時間研究一下docker自己寫個映象。

具體安裝參考

scrapy配置graphite

該模板原始碼自定乙個scrapy的stats collection,封裝了graphite client使用plaintext protocol傳送資料到graphite所在伺服器的carbon,客戶端的使用可以檢視statscol/graphite.py檔案

無圖無真相

爬蟲 分布式爬蟲

爬蟲的本質 很多搞爬蟲的總愛吹噓分布式爬蟲,彷彿只有分布式才有逼格,不是分布式簡直不配叫爬蟲,這是一種很膚淺的思想。分布式只是提高爬蟲功能和效率的乙個環節而已,它從來不是爬蟲的本質東西。爬蟲的本質是網路請求和資料處理,如何穩定地訪問網頁拿到資料,如何精準地提取出高質量的資料才是核心問題。分布式爬蟲只...

分布式爬蟲

修改普通爬蟲專案為分布式爬蟲 1.主爬蟲檔案myspider.py 做如下修改,其他不做修改 import scrapy from items import myitem 匯入資料模型 from scrapy redis.spiders import redisspider 匯入scrapy red...

分布式爬蟲

分布式爬蟲 1 在爬蟲的settings.py中新增下面兩句話 enables scheduling storing requests queue in redis.scheduler scrapy redis.scheduler.scheduler ensure all spiders share...