修改普通爬蟲專案為分布式爬蟲
1.主爬蟲檔案myspider.py 做如下修改,其他不做修改:
import scrapy
from ..items import myitem # 匯入資料模型
from scrapy_redis.spiders import redisspider #匯入scrapy_redis模組
# 1.修改scrapy.spider為redisspider
class myspider(redisspider):
# 2.注釋start_urls,新增redis_key
redis_key = 'myspider:start_urls'
...
2.settings新增如下**:
# 1.必須. 使用scrapy_redis的去重組件,在redis資料庫裡做去重
dupefilter_class = "scrapy_redis.dupefilter.rfpdupefilter"
# 2.必須. 使用scrapy_redis的排程器,在redis裡分配請求
scheduler = "scrapy_redis.scheduler.scheduler"
# 3.可選. 在redis中保持scrapy-redis用到的各個佇列,從而允許暫停和暫停後恢復,也就是不清理redis queues
scheduler_persist = true
# redis伺服器位址
redis_host = "127.0.0.1"
# redis伺服器端口
redis_port = 6379
# 管道儲存,將資料儲存到redis裡
item_pipelines =
3.分發**,選擇一台機器作為伺服器,切換到redis安裝目錄,修改配置檔案參見,
如下命令開啟redis 資料庫伺服器
\> redis-server redis.windows.conf
4.客戶端修改settings.py檔案,將redis_host的值改為redis服務端的ip位址,
\> ipconfig
或者在settings.py檔案中新增如下**指定伺服器:
# 192.168.52.215 為伺服器ip位址, 6397 為埠號
redis_url='redis:'
bind 192.168.52.215 ----繫結伺服器ip
5.執行客戶端爬蟲程式,控制台可看到程式處於等待狀態中(伺服器也可以開啟爬蟲程式,同樣處於等待狀態),
此時在伺服器端再次開啟乙個終端,連線redis資料庫並向其中新增初始url:
\> redis-cli
127.0.0.1:6379> lpush myspider:start_urls
http://www.......
此時再次觀察伺服器終端,各個爬蟲程式終端,可觀察到程式正在爬取頁面
6.爬取到了頁面,那麼就要進行讀取檢視,可使用redis desktop manager 視覺化工具連線資料庫。
爬蟲 分布式爬蟲
爬蟲的本質 很多搞爬蟲的總愛吹噓分布式爬蟲,彷彿只有分布式才有逼格,不是分布式簡直不配叫爬蟲,這是一種很膚淺的思想。分布式只是提高爬蟲功能和效率的乙個環節而已,它從來不是爬蟲的本質東西。爬蟲的本質是網路請求和資料處理,如何穩定地訪問網頁拿到資料,如何精準地提取出高質量的資料才是核心問題。分布式爬蟲只...
分布式爬蟲
乙個基於scrapy redis的分布式爬蟲模板,在scrapy redis自帶的example的基礎上進行修改,新增在實際爬取過程中大部分爬蟲可能用到的功能,使的構建分布式爬蟲更加的簡單。scrapy redis windows ubuntu sudo apt get install redis ...
分布式爬蟲
分布式爬蟲 1 在爬蟲的settings.py中新增下面兩句話 enables scheduling storing requests queue in redis.scheduler scrapy redis.scheduler.scheduler ensure all spiders share...