标签:mail enabled info otc console 子邮件 中间 rest 默认
通过scrapy提供的扩展功能, 我们可以编写一些自定义的功能, 插入到scrapy的机制中
我们现在编写一个扩展, 统计一共获取到的item的条数
我们可以新建一个extensions.py
# extendsions.py # -*- coding: utf-8-*- from scrapy import signals from scrapy.exceptions import NotConfigured class StatsItemCount(object): def __init__(self): self.item_count = 0 @classmethod def from_crawler(cls, crawler): # instantiate the extension object ext = cls() # connect the extension object to signals crawler.signals.connect(ext.spider_opened, signal=signals.spider_opened) crawler.signals.connect(ext.spider_closed, signal=signals.spider_closed) crawler.signals.connect(ext.item_scraped, signal=signals.item_scraped) # return the extension object return ext def spider_opened(self, spider): spider.logger.info("-----------opened spider %s", spider.name) def spider_closed(self, spider): spider.logger.info("------------closed spider %s", spider.name) spider.logger.info("一共获取到{}条数据".format(self.item_count)) def item_scraped(self, item, spider): self.item_count += 1
from_crawler
方法中注册信号item_scraped
方法, 统计所有解析出来的itemspider_closed
中输出抓取到的数据开启扩展:
# settings.py EXTENSIONS = { ‘ccidcom.extensions.StatsItemCount‘: 999, }
运行爬虫scrapy crawl ccidcomSpider
... 2019-11-21 16:53:23 [ccidcomSpider] INFO: -----------opened spider ccidcomSpider 2019-11-21 16:53:23 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023 2019-11-21 16:53:23 [scrapy.core.engine] INFO: Closing spider (finished) 2019-11-21 16:53:23 [ccidcomSpider] INFO: ------------closed spider ccidcomSpider 2019-11-21 16:53:23 [ccidcomSpider] INFO: 一共获取到10条数据 ...
很明显可以看出来, 编写扩展而不是在spider、中间件中编写, 整个项目更加的不乱, 可扩展性好
scrapy.extensions.logstats.LogStats
记录统计信息
scrapy.extensions.corestats.CoreStats
核心统计信息统计, 必须开启LogStats,这个扩展才有效
scrapy.extensions.telnet.TelnetConsole
提供telnet调试爬虫, 这个在之后的调试爬虫会详细讲
scrapy.extensions.memusage.MemoryUsage
内存使用监控扩展, 这个扩展不支持windows
配置值:
MEMUSAGE_LIMIT_MB: 限制爬虫大小, 达到则关闭爬虫
MEMUSAGE_WARNING_MB: 警告内存大小, 达到这个峰值则发送邮件
MEMUSAGE_NOTIFY_MAIL: 通知邮件地址
MEMUSAGE_CHECK_INTERVAL_SECONDS: 检测间隔, 单位秒
scrapy.extensions.memdebug.MemoryDebugger
这个扩展收集以下信息:
配置项:
MEMDEBUG_ENABLED: 开启后内存信息会记录在统计信息中
scrapy.extensions.closespider.CloseSpider
达到指定条件则关闭爬虫
配置项:
CLOSESPIDER_TIMEOUT: 蜘蛛运行达到一定时间则自动关闭, 默认0, 不关闭
CLOSESPIDER_ITEMCOUNT: 爬虫抓取的item达到指定的数量, 则关闭爬虫, 默认是0, 不关闭
CLOSESPIDER_PAGECOUNT: 爬虫爬取页数, 达到指定数则关闭, 默认是0, 不关闭
CLOSESPIDER_ERRORCOUNT: 如果爬虫运行期间发生的错误达到一定数量, 则关闭爬虫, 默认是0, 不关闭
scrapy.extensions.statsmailer.StatsMailer
在抓取完成后发送邮件、包括收集到的统计信息
配置项:
STATSMAILER_RCPTS: 邮件接收地址
标签:mail enabled info otc console 子邮件 中间 rest 默认
原文地址:https://www.cnblogs.com/qiu-hua/p/12638732.html