分布式爬虫(scrapy-redis)
1.什么是分布式
将一个任务分割成多份,每一份由一个计算机完成,最后所有的计算机能够成为一个整体,得到这个任务的结果。
2.scrapy分布式
原来的项目是部署在一台电脑上的,这样爬取速度虽然很快,但是我们还能提升,联想到分布式的思想,我们是否可以通过多台电脑进行配合爬取,这样我们的爬取速度就能大幅度提升。
分布式爬虫就是:【多台电脑爬取同一个项目】。
3.scrapy和scrapy-redis的区别
(1)scrapy是一个爬虫框架,但是他不支持分布式。
(2)scrapy-redis,通过scrapy上增加一个redis组件,这个redis里面设置了带爬取url的列表和每个url的指纹集合,通过这两个,做到了分布式,使得多台电脑可以联合爬取一个任务。
4.scrapy分布式的部署步骤
1.导入:from scrapy_redis.spiders import RedisSpider更改spider继承,让spider继承RedisSpider
2.注释start_urls,新建一个py文件,用来将url存储到redis数据中。—设置任务。
3.在spider增加类变量redis_key,如redis_key = ‘biquge:start_urls’。 至此,spider设置完毕
4.在settings中进行配置。
主机setting配置:
1.配置scrapy-redis调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
2.配置url去重
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
ITEM_PIPELINES = {
'scrapy_redis.pipelines.RedisPipeline': 300
}
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.PriorityQueue'
3.主机名
REDIS_HOST = 'localhost'
4.端口号
REDIS_PORT = 6379
2.从机步骤:
1,将star_urls初始化的代码全部注释。
2.从机的redis可以关闭
从机setting配置:
1.配置scrapy-redis调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
2.配置url去重
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.PriorityQueue'
# ITEM_PIPELINES = {
# 'scrapy_redis.pipelines.RedisPipeline': 300
# }
3. 主机ip
REDIS_HOST = '***' ### 连接的主机的ip
REDIS_PORT = 6379
4.主机端口
MONGO_URL = '***' ### 连接的主机的ip
MONGO_DATABASE = 'biquge'