Scrapy_redis分布式爬蟲
scrapy_redis功能:reqeust去重胜臊,爬蟲持久化钙态,和輕松實現(xiàn)分布式
安裝命令:pip3 install scrapy-redis
Scrapy-redis提供了下面四種組件(components):(四種組件意味著這四個模塊都要做相應的修改)
Scheduler
Duplication Filter
Item Pipeline
Base Spider
Scrapy_redis是工作流程
注意:
RedisSpider類 不需要寫start_urls:
scrapy-redis 一般直接寫allowd_domains來指定需要爬取的域,也可以從在構(gòu)造方法__init__()里動態(tài)定義爬蟲爬取域范圍(一般不用)渗磅。
必須指定redis_key翼岁,即啟動爬蟲的命令楼肪,參考格式:redis_key = 'myspider:start_urls'
根據(jù)指定的格式开财,start_urls將在 Master端的 redis-cli 里 lpush 到 Redis數(shù)據(jù)庫里汉柒,RedisSpider 將在數(shù)據(jù)庫里獲取start_urls
RedisCrawlSpider误褪,能夠支持分布式的抓取。因為采用的是crawlSpider碾褂,所以需要遵守Rule規(guī)則兽间,以及callback不能寫parse()方法。
要使用分布式 Scrapy_Redis Settings.py設(shè)置文件中需要做一下配置
這里表示啟用scrapy-redis里的去重組件正塌,不實用scrapy默認的去重
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
使用了scrapy-redis里面的調(diào)度器組件嘀略,不使用scrapy默認的調(diào)度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
允許暫停,redis請求的記錄不會丟失传货,不清除Redis隊列屎鳍,可以恢復和暫停
SCHEDULER_PERSIST = True
#設(shè)置請求任務(wù)的隊列模式
#SpiderPriorityQueue 是scrapy_redis框架默認的隊列模式(有自己的優(yōu)先級)
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"
# SpiderQueue 是請求的隊列模式(FifoQueue),先進先出
#SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderQueue"
# SpiderStack 是請求的隊列模式(LifoQueue),后進先出
#SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderStack"
指定要存儲的redis的主機的ip,默認存儲在127.0.0.1
REDIS_HOST = 'redis的主機的ip'
定要存儲的redis的主機的port问裕,默認6379
REDIS_PORT = '6379'
Scrapy 部署
安裝相關(guān)庫:scrapyd:pip3 install scrapyd
?scrapyd-client: pip3 install scrapyd-client
?修改scrapy項目目錄下的scrapy.cfg配置文件:? ? ? ? ? ? ? ?
??[deploy]
?url=http://localhost:6800?
project=項目名稱
本地部署
項目部署相關(guān)命令: 注意這里是項目的名稱而不是工程的名稱
scrapyd-deploy -p <項目名稱>
也可以指定版本號
scrapyd-deploy -p <項目名稱> --version <版本號>
遠端部署
1 購買linux系統(tǒng)服務(wù)器
2 在終端上登錄服務(wù)器
3 配置項目運行環(huán)境
配置python環(huán)境(ubuntu自帶python3環(huán)境))
安裝pip3:sudo apt install python3-pip
安裝scrapy:pip3 install scrapy -i https://pypi.douban.com/simple/
4 修改scrapyd的配置文件,允許外網(wǎng)訪問
查找配置文件的路徑:find -name default_scrapyd.conf
修改配置文件: sudo vim 路徑
ind_address = 0.0.0.0
5 要去服務(wù)器安全組配置
進入服務(wù)安全組選項添加安全組
添加成功后孵坚,點擊修改規(guī)則粮宛,添加如下信息(配置目的:允許訪問6800端口)
6 最后部署爬蟲項目到服務(wù)器:
首先需要修改scrapyd.egg (項目的配置文件)
7 項目部署
scrapyd-deploy -p <項目名稱>
也可以指定版本號
scrapyd-deploy -p <項目名稱> --version <版本號>