master:
一、spider文件
1.需要更改继承的类
from scrapy_redis.spiders import RedisSpider
2.注释掉start_urls
3.在爬虫目录下新创建一个redis_urls.py文件,放所有的URL到redis数据库的列表中
4.回到爬虫文件中,写一个redis_key = '列表的key'
二.settings.py文件
1 #配置分布式的主要配置选项 2 #1.配置调度器; 3 SCHEDULER = 'scrapy_redis.scheduler.Scheduler' 4 #2.配置去重器 5 DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter' 6 #3.配置调度队列 7 SCHEDULER_QUEUE_CLASS='scrapy_redis.queue.PriorityQueue' 8 #4.配置redis主机名 9 REDIS_HOST = 'localhost'10 #5.配置redis端口号11 REDIS_PORT = 6379
三.如果要解决scrapy-redis空跑问题
1.在项目目录下,新建一个extensions.py文件,写如下代码:
1 import logging 2 3 from scrapy import signals 4 from scrapy.exceptions import NotConfigured 5 6 logging = logging.getLogger(__name__) 7 8 9 class RedisSpiderSmartIdleClosedExensions(object):10 11 def __init__(self, idle_number, crawler):12 self.crawler = crawler13 self.idle_number = idle_number14 self.idle_list = []15 self.idle_count = 016 17 @classmethod18 def from_crawler(cls, crawler):19 # first check if the extension should be enabled and raise20 21 # NotConfigured otherwise22 23 if not crawler.settings.getbool('MYEXT_ENABLED'):24 raise NotConfigured25 26 if not 'redis_key' in crawler.spidercls.__dict__.keys():27 raise NotConfigured('Only supports RedisSpider')28 29 # get the number of items from settings30 31 idle_number = crawler.settings.getint('IDLE_NUMBER', 360)32 33 # instantiate the extension object34 35 ext = cls(idle_number, crawler)36 37 # connect the extension object to signals38 39 crawler.signals.connect(ext.spider_opened, signal=signals.spider_opened)40 41 crawler.signals.connect(ext.spider_closed, signal=signals.spider_closed)42 43 crawler.signals.connect(ext.spider_idle, signal=signals.spider_idle)44 45 return ext46 47 def spider_opened(self, spider):48 spider.logger.info("opened spider {}, Allow waiting time:{} second".format(spider.name, self.idle_number * 5))49 50 def spider_closed(self, spider):51 spider.logger.info(52 "closed spider {}, Waiting time exceeded {} second".format(spider.name, self.idle_number * 5))53 54 def spider_idle(self, spider):55 # 程序启动的时候会调用这个方法一次,之后每隔5秒再请求一次56 # 当持续半个小时都没有spider.redis_key,就关闭爬虫57 # 判断是否存在 redis_key58 if not spider.server.exists(spider.redis_key):59 self.idle_count += 160 else:61 self.idle_count = 062 63 if self.idle_count > self.idle_number:64 # 执行关闭爬虫操作65 self.crawler.engine.close_spider(spider, 'Waiting time exceeded')
2.打开settings.py文件中EXTENSIONS的注释,将Telent的注释掉,换上:
'项目名.extensions.RedisSpiderSmartIdleClosedExensions': 500,
3.配置settings.py文件:
# 开启扩展
MYEXT_ENABLED = True
# 每5秒就检测一次,检测10次(50秒),如果url还为空,那么就结束爬虫程序
IDLE_NUMBER = 10
slave配置:
前面都一样
需要删除redis_urls文件
settings.py的配置:
1 #......原文转载:http://www.shaoqun.com/a/876493.html
跨境电商:https://www.ikjzd.com/
reverb:https://www.ikjzd.com/w/1273
瀚霖:https://www.ikjzd.com/w/2345
kk馆:https://www.ikjzd.com/w/1713
master:一、spider文件1.需要更改继承的类fromscrapy_redis.spidersimportRedisSpider2.注释掉start_urls3.在爬虫目录下新创建一个redis_urls.py文件,放所有的URL到redis数据库的列表中4.回到爬虫文件中,写一个redis_key='列表的key'二.settings.py文件1#配置分布式的主要配置选项
bap:https://www.ikjzd.com/w/1492
去玉龙雪山旅游有什么好玩的:http://www.30bags.com/a/431153.html
去玉龙雪山旅游有什么好玩的?:http://www.30bags.com/a/431155.html
去月球旅行吧 - :http://www.30bags.com/a/409831.html
去越南旅游,"不要"接近当地的女孩,中国游客说出了其中的真相:http://www.30bags.com/a/290487.html
二个人一上一下进出 把女朋友做到下不了床:http://lady.shaoqun.com/a/248082.html
我与寡妇疯狂作爱草丛 那次寡妇被折腾的死去活来:http://lady.shaoqun.com/m/a/247593.html
男人吃醋为什么会强啪 男朋友把我整哭了还继续:http://lady.shaoqun.com/m/a/247309.html
如何在床上征服女人 性爱须知:女人最在乎的4件事 :http://lady.shaoqun.com/a/421135.html
性生活强忍不射精好不好 小心逆行射精带来4个危害 :http://lady.shaoqun.com/a/421136.html
退款不退货!亚马逊卖家损失上万元且不断增加:https://www.ikjzd.com/articles/146621
精致好用的独居生物!你们是穿着最朴素的衣服生活的小仙女。:http://lady.shaoqun.com/a/421137.html
No comments:
Post a Comment