Scrapy注册一个自定义的清洁逐行项目导出器

Scrapy注册一个自定义的清洁逐行项目导出器,scrapy,Scrapy,所以,这本应该更简单,而且最终也很简单,但这些零碎的文档确实留下了一些发现。。。总之,这是一个Q+a: 如何将Scrapy项目“按原样”逐行右转到文本文件?基本上,您需要注册一个项目导出器,然后通过命令行告诉Scrapy您要使用它: 创建名为:lines\u exporter.py的文件: 在settings.py中添加/编辑以下内容: 从命令行调用Scrapy时,请指定输出格式标志,或: 享受吧 from scrapy.exporters import BaseItemExporter fro

所以,这本应该更简单,而且最终也很简单,但这些零碎的文档确实留下了一些发现。。。总之,这是一个Q+a:


如何将Scrapy项目“按原样”逐行右转到文本文件?

基本上,您需要注册一个项目导出器,然后通过命令行告诉Scrapy您要使用它:

  • 创建名为:lines\u exporter.py的文件:
  • 在settings.py中添加/编辑以下内容:
  • 从命令行调用Scrapy时,请指定输出格式标志,或:
  • 享受吧

    from scrapy.exporters import BaseItemExporter
    from scrapy.utils.python import to_bytes
    
    class LinesExporter(BaseItemExporter):
        def __init__(self, file, **kwargs):
            super().__init__(dont_fail=True, **kwargs)
            self.file = file
            self._kwargs.setdefault('ensure_ascii', not self.encoding)
    
        def export_item(self, item):
            itemdict = dict(self._get_serialized_fields(item))
            data = ', '.join(itemdict.values()) + '\n'
            self.file.write(to_bytes(data, self.encoding))
    
    FEED_EXPORTERS = {
        'lines': 'project_name.lines_exporter.LinesExporter',
    }
    
    -t lines