Scrapy学习笔记VIII--Feed exports

来源:互联网 发布:惰性求值 js 编辑:程序博客网 时间:2024/06/05 07:20

当爬取完数据后,可以产生一个“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
添加参数

  • %(time)s — 时间戳
  • %(name)s — spider 的名字
  • %(site_id)s — 当feed被创建后spider.site_id属性变量会替换参数值。

    ftp://user:password@ftp.example.com/scraping/feeds/%(name)s/%(time)s.json

    s3://mybucket/scraping/feeds/%(name)s/%(time)s.json

Storage backends 存储到后端

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

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

    • URI scheme : ftp
    • eg : ftp://user:pass@ftp.example.com/path/to/export.csv
    • 不需要其他组件
  • 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

0 0