scrapy-redis

一.修改爬虫文件

1.导入scrapy-redis模块:from scrapy_redis.spiders import RedisSpider
2.将当前爬虫类的父类修改成RedisSpider
3.将allowed_domains和start_urls进行删除
4.添加一个新的属性redis_key = 'xxx',该属性值表示的就是可以被共享的调度器队列的名称

二.进行配置文件的配置

1.保证爬虫文件发起的请求都会被提交到可以被共享的调度器的队列中
    SCHEDULER = "scrapy_redis.scheduler.Scheduler"
2.保证爬虫文件提交的item会被存储到可以被共享的管道中
ITEM_PIPELINES = {
 'scrapy_redis.pipelines.RedisPipeline': 400
}
3.配置最终数据存储的redis数据库
    REDIS_HOST = 'redis服务的ip地址'
    REDIS_PORT = 6379
    REDIS_ENCODING = ‘utf-8’
    REDIS_PARAMS = {‘password’:’123456’}
4.redis数据库的配置文件进行配置:关闭保护模式和注释掉bind 127.0.0.1
5.开启redis服务和客户端
6.执行爬虫文件:scrapy runspider xxx.py
7.向调度器队列中仍入一个起始的url:

setting.py

#使用的是可以被共享的调度器
# 增加了一个去重容器类的配置, 作用使用Redis的set集合来存储请求的指纹数据, 从而实现请求去重的持久化
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 使用scrapy-redis组件自己的调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 配置调度器是否要持久化, 也就是当爬虫结束了, 要不要清空Redis中请求队列和去重指纹的set。如果是True, 就表示要持久化存储, 就不清空数据, 否则清空数据
SCHEDULER_PERSIST = True

#使用scrapy-redis中封装好的可以被共享的管道
ITEM_PIPELINES = {
    'scrapy_redis.pipelines.RedisPipeline': 400
}
#配置redis
REDIS_HOST = '192.168.12.58'
REDIS_PORT = 6380
REDIS_ENCODING = 'utf-8'
# REDIS_PARAMS = {‘password’:’123456’}

原文链接: scrapy-redis 版权所有,转载时请注明出处,违者必究。
注明出处格式:流沙团 ( https://gyarmy.com/post-810.html )

发表评论

0则评论给“scrapy-redis”