使用Scrapy JsonItemsLinesExporter,不返回任何值

时间:2017-12-07 00:40:31

标签: python scrapy scrapy-pipeline

我在一个抓取程序中有多个蜘蛛,我试图从脚本中同时运行所有蜘蛛,然后将内容转储到JSON文件。当我在每个蜘蛛上使用shell并执行-o xyz.json时,它可以正常工作。

我试图在这里遵循这个相当彻底的答案: How to create custom Scrapy Item Exporter?

但是当我运行该文件时,我可以看到它在shell中收集数据但它根本不输出它。

下面我按顺序复制: 出口商, 管道, 设置,

出口:

from scrapy.exporters import JsonItemExporter

class XYZExport(JsonItemExporter):

    def __init__(self, file, **kwargs):
        super().__init__(file)

    def start_exporting(self):
        self.file.write(b)

    def finish_exporting(self):
        self.file.write(b)

我正在努力确定self.file.write括号中的内容?

管道:

from exporters import XYZExport

class XYZExport(object):
    def __init__(self, file_name):
        self.file_name = file_name
        self.file_handle = None

    @classmethod
    def from_crawler(cls, crawler):
        output_file_name = crawler.settings.get('FILE_NAME')

        return cls(output_file_name)

    def open_spider(self, spider):
        print('Custom export opened')

        file = open(self.file_name, 'wb')
        self.file_handle = file


        self.exporter = XYZExport(file)
        self.exporter.start_exporting()

    def close_spider(self, spider):
        print('Custom Exporter closed')

        self.exporter.finish_exporting()

        self.file_handle.close()

    def process_item(self, item, spider):
        self.exporter.export_item(item)
        return item

设置:

FILE_NAME = 'C:\Apps Ive Built\WebScrape Python\XYZ\ScrapeOutput.json'
ITEM_PIPELINES = {
      'XYZ.pipelines.XYZExport' : 600,
}

我希望/我担心这只是一个简单的遗漏,因为这似乎是我的MO,但我是新手,这是我第一次尝试这样做。

如果有一种更稳定的方式来导出这些数据,我全都耳朵,否则你能告诉我我错过了什么,这是阻止数据被导出?或阻止出口商被正确调用。

[编辑更改设置中的管道名称]

0 个答案:

没有答案