Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t访问在完成时转储的碎片统计信息(例如完成时间)_Python_Scrapy - Fatal编程技术网

Python Can';t访问在完成时转储的碎片统计信息(例如完成时间)

Python Can';t访问在完成时转储的碎片统计信息(例如完成时间),python,scrapy,Python,Scrapy,我试图记录我的爬虫的结束时间。当scrapy完成时,它将scrapy统计数据转储到日志中。我一直在尝试使用close_spider方法使用管道来记录这些统计数据 我将统计数据作为管道的一个字段(self.stats) 问题是调用此函数时,“完成时间”不可用 我试图找到一种方法来获得与最后被抛弃的数据相同的数据 (我可以只获取完成时间的datetime.now(),但还有一些我想要访问的其他统计数据也不可用,例如完成原因,我相信创建的项目数) 通过研究,我发现了一些类似问题的答案,铲运机手柄和蜘蛛

我试图记录我的爬虫的结束时间。当scrapy完成时,它将scrapy统计数据转储到日志中。我一直在尝试使用close_spider方法使用管道来记录这些统计数据

我将统计数据作为管道的一个字段(self.stats)

问题是调用此函数时,“完成时间”不可用

我试图找到一种方法来获得与最后被抛弃的数据相同的数据

(我可以只获取完成时间的datetime.now(),但还有一些我想要访问的其他统计数据也不可用,例如完成原因,我相信创建的项目数)

通过研究,我发现了一些类似问题的答案,铲运机手柄和蜘蛛是否闭合。但是,由于各种原因,这两个版本中的代码与当前版本的scrapy不兼容


有没有人知道如何将类似的功能更新到最新版本,或者以不同的方式解决这个问题

我通过修改链接的一些答案找到了答案

因此,基本上,为了获得完成时间值,需要在爬行器关闭后访问stats。对于close_spider管道方法,这似乎不是真的。这就是为什么需要使用scrapy发送的spider_closed信号。这是我所有处理这个场景的代码

from scrapy.xlib.pydispatch import dispatcher
from scrapy import signals


def __init__(self, stats, settings):
    self.stats = stats
    dispatcher.connect(self.save_crawl_stats,signals.spider_closed)

@classmethod
def from_crawler(cls, crawler):
    return cls(crawler.stats,crawler.settings)

def save_crawl_stats(self):
    record_crawl_stats(self.cur,self.stats,self.crawl_instance)

我通过修改链接到的一些答案找到了答案

因此,基本上,为了获得完成时间值,需要在爬行器关闭后访问stats。对于close_spider管道方法,这似乎不是真的。这就是为什么需要使用scrapy发送的spider_closed信号。这是我所有处理这个场景的代码

from scrapy.xlib.pydispatch import dispatcher
from scrapy import signals


def __init__(self, stats, settings):
    self.stats = stats
    dispatcher.connect(self.save_crawl_stats,signals.spider_closed)

@classmethod
def from_crawler(cls, crawler):
    return cls(crawler.stats,crawler.settings)

def save_crawl_stats(self):
    record_crawl_stats(self.cur,self.stats,self.crawl_instance)

我通过修改链接到的一些答案找到了答案

因此,基本上,为了获得完成时间值,需要在爬行器关闭后访问stats。对于close_spider管道方法,这似乎不是真的。这就是为什么需要使用scrapy发送的spider_closed信号。这是我所有处理这个场景的代码

from scrapy.xlib.pydispatch import dispatcher
from scrapy import signals


def __init__(self, stats, settings):
    self.stats = stats
    dispatcher.connect(self.save_crawl_stats,signals.spider_closed)

@classmethod
def from_crawler(cls, crawler):
    return cls(crawler.stats,crawler.settings)

def save_crawl_stats(self):
    record_crawl_stats(self.cur,self.stats,self.crawl_instance)

我通过修改链接到的一些答案找到了答案

因此,基本上,为了获得完成时间值,需要在爬行器关闭后访问stats。对于close_spider管道方法,这似乎不是真的。这就是为什么需要使用scrapy发送的spider_closed信号。这是我所有处理这个场景的代码

from scrapy.xlib.pydispatch import dispatcher
from scrapy import signals


def __init__(self, stats, settings):
    self.stats = stats
    dispatcher.connect(self.save_crawl_stats,signals.spider_closed)

@classmethod
def from_crawler(cls, crawler):
    return cls(crawler.stats,crawler.settings)

def save_crawl_stats(self):
    record_crawl_stats(self.cur,self.stats,self.crawl_instance)

您是否像这里的一个示例那样初始化了管道@GHajba是的,我有。我有权访问stats对象。这是一个时间问题,我可以访问较早设置的值,例如开始时间,但当close spider被称为finish time时,其他各种值尚未设置。您是否像这里的一个示例那样初始化了您的管道@GHajba是的,我有。我有权访问stats对象。这是一个时间问题,我可以访问较早设置的值,例如开始时间,但当close spider被称为finish time时,其他各种值尚未设置。您是否像这里的一个示例那样初始化了您的管道@GHajba是的,我有。我有权访问stats对象。这是一个时间问题,我可以访问较早设置的值,例如开始时间,但当close spider被称为finish time时,其他各种值尚未设置。您是否像这里的一个示例那样初始化了您的管道@GHajba是的,我有。我有权访问stats对象。这是一个时间问题,我可以访问早些时候设置的值,比如开始时间,但是当close spider被称为finish time时,其他各种值还没有设置。