首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用scrapy以多种格式导出刮擦数据

使用scrapy以多种格式导出刮擦数据
EN

Stack Overflow用户
提问于 2015-06-24 16:42:52
回答 1查看 1.5K关注 0票数 7

我正在抓取一个网站,将数据导出为语义格式(n3)。但是,我也想对这些数据执行一些数据分析,所以以csv格式进行比较方便。

要获得这两种格式的数据,我可以这样做

代码语言:javascript
复制
scrapy spider -t n3 -o data.n3
scrapy spider -t csv -o data.csv

然而,这两次擦拭数据,我负担不起大量的数据。

是否有办法将相同的刮擦数据导出成多种格式?(不多次下载数据)

我发现有一个可以导出到不同格式的刮取数据的中间表示很有趣。但似乎没有办法用刮痕来做这件事。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-24 18:02:09

根据我在探索源代码和文档之后所理解的,设置不能具有多个值。此外,FeedExporter内置扩展(来源)仅适用于单个出口商。

实际上,可以考虑在刮伤问题追踪器上提出一个特性请求。

更像一个解决方案,定义一个管道并开始与多个出口商一起导出。例如,下面是如何导出CSV和JSON格式:

代码语言:javascript
复制
from collections import defaultdict

from scrapy import signals
from scrapy.exporters import JsonItemExporter, CsvItemExporter


class MyExportPipeline(object):
    def __init__(self):
        self.files = defaultdict(list)

     @classmethod
     def from_crawler(cls, crawler):
         pipeline = cls()
         crawler.signals.connect(pipeline.spider_opened, signals.spider_opened)
         crawler.signals.connect(pipeline.spider_closed, signals.spider_closed)
         return pipeline

    def spider_opened(self, spider):
        csv_file = open('%s_products.csv' % spider.name, 'w+b')
        json_file = open('%s_products.json' % spider.name, 'w+b')

        self.files[spider].append(csv_file)
        self.files[spider].append(json_file)

        self.exporters = [
            JsonItemExporter(json_file),
            CsvItemExporter(csv_file)
        ]

        for exporter in self.exporters:
            exporter.start_exporting()

    def spider_closed(self, spider):
        for exporter in self.exporters:
            exporter.finish_exporting()

        files = self.files.pop(spider)
        for file in files:
            file.close()

    def process_item(self, item, spider):
        for exporter in self.exporters:
            exporter.export_item(item)
        return item
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31032340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档