在 scrapy 2.0.1 中,我正在将新数据写入 json 文件。在该过程的最后,我想附加 scrapy 统计数据。现在我知道有一个 scrapy stats 集合可用:
https://docs.scrapy.org/en/latest/topics/stats.html
所以正确的代码行可能是这样的:stats.get_stats()
和这个结合:
class ExtensionThatAccessStats(object):
def __init__(self, stats):
self.stats = stats
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.stats)
Run Code Online (Sandbox Code Playgroud)
我当前的管道如下所示:
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()
Run Code Online (Sandbox Code Playgroud)
我是Python新手。如何添加此功能以将统计信息附加到 json 文件中?
您可以使用在运行结束时运行的统计信息收集器。
将其添加到settings.py:
STATS_CLASS = 'mycrawler.MyStatsCollector.MyStatsCollector'
Run Code Online (Sandbox Code Playgroud)
以下是将 JSON 输出到文件的 MyStatsCollector.py 的基本实现:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
785 次 |
| 最近记录: |