crawlspider的使用

要实现只使用scrapy-redis的去重和保存功能的话只需要修改settings文件就可以了

要实现只使用scrapy-redis的去重和保存功能,只需要修改settings里面的设置信息
爬虫文件不需要动
这里是使用scrapy-redis自己实现了去重组件,不在使用scrapy的框架内部的去重组件
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
这里是使用scrapy自己实现的调度器,不在使用scrapy内部的调度器组件
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
允许暂停和恢复,redis将会保存我们之前的请求记录,
SCHEDULER_PERSIST = True
request的三中队列模式scrapy 默认使用的一种队列模式,有自己的优先级(里面实质是使用了redis的有序集合)
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"
使用了堆的形式(请求任务先进先出)
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderQueue"
栈的形式(先进后出)
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderStack"

配置redis数据库的信息
指定redis数据库的host(公网ip)(要存储数据redis的主机ip)
REDIS_HOST = '127.0.0.1'

REDIS_HOST = '118.24.255.219'
制定redis数据库的端口号(要存储数据redis的主机端口)
REDIS_PORT = 6379

指定redis保存数据时的字符集
REDIS_ENCODING = 'utf-8'

如果我们要实现通用爬虫的分布式爬取的话
我们不仅要修改settings文件如上,
还要在爬虫文件中把我们继承的类换为class QdSpider(RedisCrawlSpider):
导入from scrapy_redis.spiders import RedisCrawlSpider
class QdSpider(RedisCrawlSpider):
在将我们的start_urls改为redis_keys
在redis_keys = '项目名称:start_urls'
设置redis_keys作用是让我们的调度器从redis数据库里取到起始任务
我们只需要在redis数据库里面定义一个起始的任务就可以了

如果我们要实现普通爬虫的分布式怕去的话
我们也是不仅要修改settings文件,
还要在爬虫文件中把我们继承的类换为,class RedisSpider
导入from scrapy.redis.spider import RedisSpider
在将我们的start_urls改为redis_keys
在redis_keys = '项目名称:start_urls'
设置redis_keys作用是让我们的调度器从redis数据库里取到起始任务
我们只需要在redis数据库里面定义一个起始的任务就可以了

以上三种分布式方式的settigns的样式都是一样的只是爬虫文件里继承的类不同

你可能感兴趣的:(crawlspider的使用)