Python Scrapy:如何将爬行统计信息保存到json文件?
在scrapy 2.0.1中,我将新数据写入json文件。在这个过程的最后,我想附加一些零碎的统计数据。现在我知道有一个scrapy stats集合可用: 因此,正确的代码行可能是:Python Scrapy:如何将爬行统计信息保存到json文件?,python,scrapy,Python,Scrapy,在scrapy 2.0.1中,我将新数据写入json文件。在这个过程的最后,我想附加一些零碎的统计数据。现在我知道有一个scrapy stats集合可用: 因此,正确的代码行可能是:stats.get\u stats() 结合: class ExtensionThatAccessStats(object): def __init__(self, stats): self.stats = stats @classmethod def from_craw
stats.get\u stats()
结合:
class ExtensionThatAccessStats(object):
def __init__(self, stats):
self.stats = stats
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.stats)
我当前的管道如下所示:
class test_pipeline(object):
file = None
def open_spider(self, spider):
self.file = open('data/test.json', 'wb')
self.exporter = JsonItemExporter(self.file)
self.exporter.start_exporting()
def close_spider(self, spider):
self.exporter.finish_exporting()
self.file.close()
我是Python新手。如何添加此功能以将统计信息附加到json文件?您可以使用在运行结束时运行的统计信息收集器 将其添加到settings.py:
STATS_CLASS = 'mycrawler.MyStatsCollector.MyStatsCollector'
下面是MyStatsCollector.py的一个基本实现,它将JSON输出到一个文件:
from scrapy.statscollectors import StatsCollector
from scrapy.utils.serialize import ScrapyJSONEncoder
class MyStatsCollector(StatsCollector):
def _persist_stats(self, stats, spider):
encoder = ScrapyJSONEncoder()
with open("stats.json", "w") as file:
data = encoder.encode(stats)
file.write(data)
您应该能够在管道中使用来自爬虫的
。@Gallaecio您能进一步解释一下吗?我添加了close_spider方法:print(self.stats.get_stats()),但没有任何效果。您应该能够将问题的\uuu init\uuuu
和从\u crawler
方法添加到管道类中,从而使self.stats
可用。嘿,您曾经成功地将统计导出到json吗?