scrapy-redis
1:安装
2:redis基本语句
redis和栈一样先进后出
#字符串 set age 18 EX 60 #设置age=18 过期时间60秒 ttl age #查看过期时间 expire [key] 60 #设置key 60秒过期 keys * #查看所有信息 #添加列表 lpush websites baidu.com #从左添加 rpush websites google.cm #从右添加 lrange websites 0 -1 #查看列表websites 第0个到最后一个元素 切片模式 lpop websites #移除website最左边的元素 rpop websites #移除website最右边的元素 lrem websites count value #移除websites中count个value (count大于0表示从左往右找 count<0表示从右往左找 count=0表示删除所有) lindex websites 1 #返回列表中的某个值 llen websites #返回列表中的值的个数 #集合 相对于列表无序,不能重复,唯一 sadd tem1 yaoming #添加姚明到集合tem1 smembers tem1 #查看tem1中的值 srem [key] #移除元素 scard team1 #查看有多少元素 sinter set1 set2 #计算交集 sunion set1 set2 #计算并集 sdiff set1 set2 #计算差集 #hash操作 类似python的字典 hset website baidu www.baidu.com #设置key=baidu value=www.baidu.com的 hset website google www.google.com hget website baidu #查看baidu的值 hdel website baidu #删除 hgetall website #查看website中所有的
9-2
3:修改一个普通爬虫成分布式爬虫
编写Scrapy-Redis分布式爬虫:
要将一个Scrapy
项目变成一个Scrapy-redis
项目只需修改以下三点就可以了:
- 将爬虫的类从
scrapy.Spider
变成scrapy_redis.spiders.RedisSpider
;或者是从scrapy.CrawlSpider
变成scrapy_redis.spiders.RedisCrawlSpider
。 - 将爬虫中的
start_urls
删掉。增加一个redis_key="xxx"
。这个redis_key
是为了以后在redis
中控制爬虫启动的。爬虫的第一个url,就是在redis中通过这个发送出去的。 - 在配置文件中增加如下配置:
# Scrapy-Redis相关配置 # 确保request存储到redis中 SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 确保所有爬虫共享相同的去重指纹 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" # 设置redis为item pipeline ITEM_PIPELINES = { 'scrapy_redis.pipelines.RedisPipeline': 300 } # 在redis中保持scrapy-redis用到的队列,不会清理redis中的队列,从而可以实现暂停和恢复的功能。 SCHEDULER_PERSIST = True # 设置连接redis信息 REDIS_HOST = '127.0.0.1' REDIS_PORT = 6379