数据格式化输出

自动格式化输出文件
  • scrapy支持的格式化输出文件格式
    • json
    • jsonlines
    • csv
    • xml
  • 通过配置setting中属性,来定义存储方式
    • FEED_URI   存储路径,必须配置,如果不配置,需要在启动时候指定路径
      • 示例:file://tmp/export.csv
      • 备注:
        • 路径的名称可以格式化,例如:
    • FEED_FORMAT   用于序列化输出的文件格式,就是上面的几种
    • FEED_EXPORT_ENCODING   文件编码格式,一般默认utf-8,json默认是安全编码格式
    • FEED_EXPORT_FIELDS    定义输出文件中包含的字段,为列表格式
    • FEED_EXPORT_INDENT    定义输出内容的缩进,默认为0,
      • 0和负数表示内容会放在一行上
      • None会选择最紧凑的方式,将数据进行摆放
      • 其他,将会按照指定的缩进,对对象的成员进行格式化显示
    • FEED_STORE_EMPTY     如果没输出是否会导出文件,默认为False
    • FEED_STORAGES_BASE    字典类型,包含所有支持存储方式模板引擎, 一般不需要手动配置
      • 默认为
  • FEED_STORAGES     一个字典类型,可以手动添加存储方式的模板引擎
    • 默认为 { }
    • 如果想要禁用某一个模板文件类型的引擎,可以将上面对应字段值设置为None
  • FEED_EXPORTERS_BASE    字典类型,包含了所有支持的格式文件处理引擎, 一般不需要手动配置
    • 默认为
  • FEED_EXPORTERS      一个字典类型,可以手动添加文件处理引擎
    • 默认为{ }
    • 如果想要禁用某一个模板文件类型的引擎,可以将上面对应字段值设置为None
scrapy手动输出指定csv格式文件
  • 目标:
    • 获取如下格式的csv文件
  • 配置的步骤
  • 1. 在scrapy的spiders同层目录,新建my_project_csv_item_exporter.py文件内容如下(文件名可改,目录定死)
            from scrapy.conf import settings
            from scrapy.contrib.exporter import CsvItemExporter

            class MyProjectCsvItemExporter(CsvItemExporter):

            def __init__(self, *args, **kwargs):
                delimiter = settings.get('CSV_DELIMITER', ',')
                kwargs['delimiter'] = delimiter

                fields_to_export = settings.get('FIELDS_TO_EXPORT', [])
                if fields_to_export :
                    kwargs['fields_to_export'] = fields_to_export

                super(MyProjectCsvItemExporter, self).__init__(*args, **kwargs)
  • 2. 在同层目录,settings.py文件新增如下内容(指定item,field顺序)
            FEED_EXPORTERS = {
                'csv': 'my_project.my_project_csv_item_exporter.MyProjectCsvItemExporter',
            } #这里假设你的project名字为my_project

            FIELDS_TO_EXPORT = [
                'id',
                'name',
                'email',
                'address'
            
  • 3. 在同层目录,settings.py文件指定分隔符
    • CSV_DELIMITER = "\t"
  • 4.启动项目
    • 全部设定完后,执行scrapy crawl spider -o spider.csv的时候,字段就按顺序来了。

刘小恺(Kyle) wechat
如有疑问可联系博主