Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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 Scrapy:与XmlItemExporter一起使用FTP_Python_Scrapy - Fatal编程技术网

Python Scrapy:与XmlItemExporter一起使用FTP

Python Scrapy:与XmlItemExporter一起使用FTP,python,scrapy,Python,Scrapy,我编写了一个自定义管道来获取我想要的节点名称: class XmlExportPipeline(object): def __init__(self): self.files = {} @classmethod def from_crawler(cls, crawler): pipeline = cls() crawler.signals.connect(pipeline.spider_opened, signal

我编写了一个自定义管道来获取我想要的节点名称:

class XmlExportPipeline(object):

    def __init__(self):
        self.files = {}

    @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):
        file = open('crawl.xml', 'w',encoding='utf-8')
        self.files[spider] = file
        self.exporter = XmlItemExporter(file,item_element='job', root_element='jobs', indent=1)
        self.exporter.start_exporting()


    def spider_closed(self, spider):
        self.exporter.finish_exporting()
        file = self.files.pop(spider)
        file.close()
        self.uploadftp(spider)

    def process_item(self, item, spider):

        self.exporter.export_item(item)
        return item

现在,我不知道如何使用FTP而不是本地存储进行导出。

要更改项目数据,管道非常有用。而且确实存在一些出口用例,在这些用例中它们也是有意义的(例如)

但是,要更改输出格式,最好实现自定义提要导出器,在中注册并在中启用它

关于创建自定义提要导出器,没有详细的文档,但是如果您查看了它的实现,您应该能够解决问题


事实上,查看您的代码,您可能只需要子类化,更改其
\uuuu init\uuuu
方法以将
item\u element='job',root\u element='jobs'
传递给父级
\uu init\uuuu
,并使用设置定义所需的缩进(
1
)。

您知道吗?如果是这样的话,是什么阻止您使用它们进行FTP导出?我确实知道提要导出,但我想用自定义节点/根名称格式化xml,然后internet告诉我使用自定义管道来代替。将来,所有这些都可以使用。