基于scrapy内置数据收集机制显示爬取效率

基于scrapy内置数据收集机制显示爬取效率

近段时间一直在研究如何有效的统计scrapy的抓取进度了解到scrapy自带的数据收集接口

直接po代码!~写在middleware中

from scrapy import signals
from twisted.internet import task

    def __init__(self, stats):
        self.stats = stats
        #每隔多少秒监控一次已抓取数量
        self.time = 10.0
    @classmethod
    def from_crawler(cls, crawler, *args, **kwargs):
        instance = cls(crawler.stats)
        crawler.signals.connect(instance.spider_opened, signal=signals.spider_opened)
        crawler.signals.connect(instance.spider_closed, signal=signals.spider_closed)
        return instance
        
    def spider_opened(self):
        self.tsk = task.LoopingCall(self.collect)
        self.tsk.start(self.time, now=True)

    def spider_closed(self):
        scrapy_count = self.stats.get_value('item_scraped_count')
        print(scrapy_count)
        if self.tsk.running:
            self.tsk.stop()

    def collect(self):
        # 这里收集stats并写入相关的储存。
        # 目前展示是输出到终端
        scrapy_count = self.stats.get_value('item_scraped_count')
        if scrapy_count:
            print(scrapy_count)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值