多台主机共享1个爬取队列
重写scrapy调度器(scrapy_redis模块)
1、Redis基于内存,速度快
2、Redis非关系型数据库,Redis中集合,存储每个request的指纹
3、scrapy_redis安装
sudo pip3 install scrapy_redis
Redis使用
1、服务端启动 :cmd命令行 -> redis-server.exe
客户端连接 :cmd命令行 -> redis-cli.exe
sudo apt-get install redis-server
redis-server
redis-cli -h IP地址
腾讯招聘笔记分布式案例
正常项目数据抓取(非分布式)
首先将项目以非分布式方式完成
改写为分布式(redis)
- settings.py
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
'scrapy_redis.pipelines.RedisPipeline': 200
REDIS_HOST = '172.40.91.129'
REDIS_PORT = 6379
改写为分布式(mongodb)
ITEM_PIPELINES = {
'Tencent.pipelines.TencentPipeline': 300,
'Tencent.pipelines.TencentMongoPipeline':200,
}
flushall
- 代码拷贝一份到Ubuntu(分布式中其他机器),两台机器同时执行此代码