分布式爬虫的实现
-
创建爬虫类
scrapy genspider itcast itcast.cn
-
修改继承类为scrapy_reids中的RedisSpider
-
删除原有的start_urls
-
添加存在start_urls在redis数据库中的键
from scrapy_redis.spiders import RedisSpider class ItcastSpider(RedisSpider): name = 'itcast' allowed_domains = ['itcast.cn'] # 删除原有的start_urls # start_urls = ['http://itcast.cn/'] # 添加存在start_urls在redis数据库中的键 redis_key = "itcast:start_urls" def parse(self, response): pass
前提:必须实现增量式爬虫的配置
USER_AGENT = 'scrapy-redis (+https://github.com/rolando/scrapy-redis)' # 指定了去重的类 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" # 制定了调度器的类 SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 调度器的内容是否持久化 SCHEDULER_PERSIST = True # 多台机器共享的redis的url REDIS_URL = "redis://192.168.31.69:6379"
-
启动
lpush itcast:start_urls http://www.itcast.cn
scrapy crawl itcast
RedisCrawlSpier的使用
scrapy genspider -t crawl itcast itcast.cn
修改继承类为RedisCrawlSpier
删除start_urls
添加redis_key