1.settings.py
# --------------Scrapy-Redis分布式爬虫相关设置---------------- # 启用Redis调度器存储请求队列,使用Scrapy-Redis的调度器,不再使用scrapy的调度器 SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 确保所有的爬虫通过Redis去重,使用Scrapy-Redis的去重组件,不在使用scrapy的去重组件 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" # 持久化,不清理redis中的队列,从而可以实现暂停和恢复功能 # SCHEDULER_PERSIST = True # ----------redis的地址配置----------- # 指定用于连接redis的URL # 如果设置此项,则此项优先级高于设置的REDIS_HOST和REDIS_PORT # REDIS_URL = ‘redis://root:123456@192.168.8.30:6379’ # 指定连接到redis时使用的端口和地址 REDIS_HOST = 'localhost' REDIS_PORT = 6379 # 自定义的redis参数 指定2号库 REDIS_PARAMS = {'db': 2}
2.sy_spider.py爬虫文件
import redis from scrapy_redis.spiders import RedisSpider from scrapy.utils.project import get_project_settings # 变更 -- 顺义区政府采购网 class SySpider(RedisSpider): name = 'sy_spider' allowed_domains = ['gov.cn'] settings = get_project_settings() province = settings.get("PROVINCE") basic_url = 'http://www.xxx.gov.cn:80/ggzyjy/jyfwgzgs/index.jhtml' # 配置redis key值 redis_key = "sy_spider:start_urls"
# 添加配置,给redis初始键插入值 conn = redis.Redis(host="localhost", port=6379, db=2) conn.lpush(redis_key, basic_url)