使用scrapy-redis构建分布式爬虫

使用scrapy-redis构建的分布式爬虫
1.使用scrapy-redis类下的RedisSpider
2.将爬虫脚本继承RedisSpider
3.取消start_url,改为 redis_key = "myspider:start_urls"在这里插入图片描述

4.修改scrapy中的setting文件:

#使用scrapy_redis的去重类 不使用scrapy默认的去重类
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

#使用scrapy_redis的调度器 不使用scrapy默认的调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"

#默认的scrapy-redis请求队列形式(按优先级)
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"

#控制爬虫是否允许暂停
SCHEDULER_PERSIST = True

ITEM_PIPELINES = {
    'ProjectName.pipelines.ProductPipeline': 300,
    'scrapy_redis.pipelines.RedisPipeline': 400,
}

#域名为字符串  如果不写  默认为本机  数据库的ip
#注意:若为master这里的域名应该写本机的域名,我这里写127.0.0.1来代替
#若为slave这里写master的域名

REDIS_HOST = '服务器ip'
#端口为数字
REDIS_PORT = 6379

5.启动本地Redis,到本地redis目录下输入命令 redis-server.exe
在这里插入图片描述
6.启动爬虫脚本,到scrapy下包含spider的目录中输入命令 scrapy runspider spidername.py
在这里插入图片描述
7.启动redis-cli,到本地redis目录下输入命令 redis-cli -h 服务器ip
在这里插入图片描述
然后输入 lpush myspider:start_urls start_url
在这里插入图片描述

8.这时会发现爬虫脚本已经启动
在这里插入图片描述
在这里插入图片描述

会遇到的问题:

1.服务器Redis在本地连接不上出现Can’t connect to redis-server,可能是因为 redis.conf 配置文件没有改,需要修改以下几个部分:
1.1在这里插入图片描述
1.2在这里插入图片描述
1.3在这里插入图片描述
2.没有打开Pipeline通道,导致数据存在redis中,没有存到mysql中

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值