1.scrapy_redis
spider.py
spider写法一:同crawlspider
spider写法二:麻烦的是还需要手动向数据库添加起始地址
from scrapy_redis.spiders import RedisCrawlSpider
class Booktest(RedisCrawlSpider):
name = 'myspider2'
redis_key = 'myspider2:start_urls'
...
settings.py
添加
#核心配置
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
#共享的爬取队列,这里用需要redis的连接信息f
#例:REDIS_URL='redis://[:pass]@host:port/db' [:pass]有就写没有就不写,db数据库代号(默认是0)
REDIS_URL = 'redis://@134.175.21.169:6379'
# 配置持久化
# 这样设置后指纹和请求队列则会保存在redis数据库中
#requests只会保存已经到调度器里但还没发给引擎的url
SCHEDULER_PERSIST = True
# 设置重启爬虫时是否清空爬取队列(单机爬虫可以设置,分布式爬虫不要设置)
# 这样每次重启爬虫都会清空指纹和请求队列,默认为False,一般不进行设置
# SCHEDULER_FLUSH_ON_START=False
2.scrapy_redis_bloomfilter
spider:同crawlspider
settings.py
#核心配置
SCHEDULER = "scrapy_redis_bloomfilter.scheduler.Scheduler"
DUPEFILTER_CLASS = "scrapy_redis_bloomfilter.dupefilter.RFPDupeFilter"
#共享的爬取队列,这里用需要redis的连接信息f
#例:REDIS_URL='redis://[:pass]@host:port/db' [:pass]有就写没有就不写,db数据库代号(默认是0)
REDIS_URL = 'redis://@192.168.2.20:6379'
# 配置持久化
# 这样设置后指纹和请求队列则会一直保存在redis数据库中,默认为False
#requests只会保存已经到调度器里但还没发给引擎的url
SCHEDULER_PERSIST = True
# 设置重启爬虫时是否清空爬取队列(单机爬虫可以设置,分布式爬虫不要设置)
# 这样每次重启爬虫都会清空指纹和请求队列,默认为False,一般不进行设置
# SCHEDULER_FLUSH_ON_START=False
# Number of Hash Functions to use, defaults to 6
BLOOMFILTER_HASH_NUMBER = 6
# # Bit
BLOOMFILTER_BIT = 30