Scrapy学习笔记VIII--Feed exports

时间:2022-05-29 23:17:14

当爬取完数据后,可以产生一个“export file”(输出文件)–>export feed(反馈报告),可以被其他系统所使用消耗

scrapy提供 Feed Exports,可以为items产生一个feed(文件如json,CSV,xml等),然后格式化的存储到后端

Serialization formats
当你爬取数据后,想把数据保存在本地路径(如json格式)或者其他地方,scrapy 使用(Item exporters),支持以下格式:

  • JSON ———–JsonItemExporter
  • JSON lines — JsonLinesItemExporter
  • CSV ————CsvItemExporter
  • XML ———–XmlItemExporter
  • Pickle ———PickleItemExporter
  • Marshal ——MarshalItemExporter
    你也可以扩展其他格式,通过 FEED_EXPORTERS setting 来设置

Storages

当为item数据定义好输出格式后,使用URI定义(FEED_URI setting)多种选择保存到后端:

  • 本地文件
  • FTP
  • S3 需要其他组件
  • 标准的输出

Storage URI parameters
添加参数

Storage backends 存储到后端

  • Local filesystem (存储到本地路径)

    • URI scheme : file
    • eg : file:///tmp/export.csv
    • 不需要其他组件
  • FTP

  • S3

    • URI scheme :s3
      • eg :
        s3://mybucket/path/to/export.csv

    s3://aws_key:aws_secret@mybucket/path/to/export.csv

    • 需要其他组件 botocore 、boto
  • Standard output

Settings
feed exports 的一些配置:

  • FEED_URI

  • FEED_FORMAT

  • FEED_EXPORT_ENCODING

  • FEED_EXPORT_FIELDS :

  FEED_EXPORT_FIELDS = ["foo", "bar", "baz"] #
  • FEED_STORE_EMPTY

  • FEED_STORAGES : default {}

  • FEED_STORAGES_BASE

{
'': 'scrapy.extensions.feedexport.FileFeedStorage',
'file': 'scrapy.extensions.feedexport.FileFeedStorage',
'stdout': 'scrapy.extensions.feedexport.StdoutFeedStorage',
's3': 'scrapy.extensions.feedexport.S3FeedStorage',
'ftp': 'scrapy.extensions.feedexport.FTPFeedStorage',
}

  • FEED_EXPORTERS : default {}

  • FEED_EXPORTERS_BASE

 {
'json': 'scrapy.exporters.JsonItemExporter',
'jsonlines': 'scrapy.exporters.JsonLinesItemExporter',
'jl': 'scrapy.exporters.JsonLinesItemExporter',
'csv': 'scrapy.exporters.CsvItemExporter',
'xml': 'scrapy.exporters.XmlItemExporter',
'marshal': 'scrapy.exporters.MarshalItemExporter',
'pickle': 'scrapy.exporters.PickleItemExporter',
}

FEED_EXPORTERS = {
'csv': None, #禁止使用CSV格式
}
  • FEED_STORE_EMPTY

  • FEED_EXPORT_ENCODING