笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

条目导出器

发布者: 笨鸟自学网

一旦抓取了项目,您通常希望保留或导出这些项目,以便在其他应用程序中使用数据。这毕竟是抓取过程的全部目的。

为此,Scrapy为不同的输出格式(如XML、CSV或JSON)提供了一组项目导出器。

使用项目导出器

如果您很着急,只想使用项目导出器输出 爬取 的数据,请参见 Feed 导出 . 否则,如果您想知道项目导出器是如何工作的,或者需要更多的自定义功能(不包括在默认导出中),请继续阅读下面的内容。

为了使用项导出器,必须用它所需的参数实例化它。每个项目导出器需要不同的参数,因此请检查每个导出器文档以确保 内置项导出器引用 . 在实例化导出器之后,必须:

1。调用方法 start_exporting() 以便发出出口过程开始的信号

2。打电话给 export_item() 要导出的每个项的方法

三。最后打电话给 finish_exporting() 发出输出过程结束的信号

在这里你可以看到 Item Pipeline 它使用多个项目导出器,根据其中一个字段的值将 爬取 的项目分组到不同的文件中:

from itemadapter import ItemAdapter
from scrapy.exporters import XmlItemExporter

class PerYearXmlExportPipeline:
    """Distribute items across multiple XML files according to their 'year' field"""

    def open_spider(self, spider):
        self.year_to_exporter = {}

    def close_spider(self, spider):
        for exporter, xml_file in self.year_to_exporter.values():
            exporter.finish_exporting()
            xml_file.close()

    def _exporter_for_item(self, item):
        adapter = ItemAdapter(item)
        year = adapter['year']
        if year not in self.year_to_exporter:
            xml_file = open(f'{year}.xml', 'wb')
            exporter = XmlItemExporter(xml_file)
            exporter.start_exporting()
            self.year_to_exporter[year] = (exporter, xml_file)
        return self.year_to_exporter[year][0]

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

上一篇:调度程序

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-7-27 13:21 , Processed in 0.064036 second(s), 17 queries .

© 2001-2020

返回顶部