分布式爬虫:爬虫共用同一个爬虫程序,即把同一个爬虫程序同时部署到多台电脑上运行,这样可以提高爬虫速度。
在默认情况下,scrapy爬虫是单机爬虫,只能在一台电脑上运行,因为爬虫调度器当中的队列queue去重和set集合都是在本机上创建的,其他的电脑无法访问另外一台电脑上的内存的内容;想要让多台机器共用一个queue队列和set集合,可以让scrapy结合scrapy_redis来完成。
要实现分布式爬虫,首先要配置服务器主从:
配置主从的目的:
1、达到一个备份的功能,一旦master出现崩溃,而数据库中还有数据的话
可以将其中的一个slave重新设置为主服务器,从而恢复Redis的正常运行
2、一个Redis服务器负责读写,性能较低,通过主从来减轻一个Redis的压力
下面通过爬伯乐在线来介绍具体怎么实现:
第一步:
在爬虫文件中引入RedisCrawSpider和Rule
from scrapy_redis.spiders import RedisCrawlSpider
from scrapy.spiders import Rule
让类继承RedisCrawSpider
class BlogSpider(RedisCrawlSpider):
name = 'blog'
#允许爬虫的范围
allowed_domains = ['blog.jobbole.com']
#用于查找所有符合给定模式的key
redis_key = 'blogspider:start_urls'
第二步:
完成需求,我的需求:获取所有文章的标题 图片地址 时间 详情页地址 收藏 点赞 评论
引入scrapy
import scrapy
获取数据:
<