Scrapy——Feed exports

本文介绍Scrapy框架中Feed输出的配置方法,包括序列化格式如JSON、CSV等,存储方式如本地文件系统、FTP、S3等,以及如何通过设置FEED_URL和FEED_FORMAT等参数来实现数据导出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现爬虫时最经常提到的需求就是能合适的保存爬取到的数据,或者说,生成一个带有爬取数据的“输出文件”,来供其它系统使用。
Scrapy自带了Feed输出,并且支持多种序列化格式及存储方式。

序列化方式

feed 输出使用到了Item exporters。其自带的类型有:

  • JSON
  • JSON lines
  • CSV
  • XML

也可以通过FEED_EXPORTERS设置扩展支持的属性。

JSON

  • FEED_FORMAT:json
  • 使用的exporter:JsonItemExporter

JSON lines

  • FEED_FORMAT:jsonlines
  • 使用的exporter:JsonLinesItemExporter

CSV

  • FEED_FORAT:csv
  • 使用的exporter:CsvItemExporter

XML

  • FEED_FORMAT:xml
  • 使用的exporter:XmlItemExporter

Pickle

  • FEED_FORMAT:pickle
  • 使用的exporter:PickleItemExporter

Marshal

  • FEED_FORMAT:marshal
  • 使用的exporter:MarshalItemExporter

存储

使用feed输出时你可以通过使用URL来定义存储端。feed输出支持URL方式支持的多种存储后端类型。
自带支持的存储后端有:

  • 本地文件系统
  • FTP
  • S3
  • 标准输出

存储URL参数

存储URL也包含参数。当feed被创建时这些参数可以被覆盖:

  • %(time)s-当feed被创建时被timestamp覆盖
  • %(name)s-被spider的名字覆盖

其他命名的参数会被spider同名属性所覆盖。

存储端

本地文件系统
将feed存储在本地系统。

  • URL scheme:file
  • URL样例:file:///tmp/export.csv
  • 需要的外部依赖库:none

只有在本地文件系统时,你可以指定一个绝对路径/tmp/export.csv并忽略协议。不过这仅仅只能在Unix系统中工作。
FTP
将feed存储在FTP服务器

  • URL scheme:ftp
  • URL样例:
ftp://user:pass@ftp.example.com/path/to/export.csv
  • 需要的外部依赖库:none

S3
将feed存储在Amazon S3

  • URL scheme:S3
  • URL样例:
    • s3://mybucket/path/to/export.csv
    • s3://aws_key:aws_secret@mybucket/path/to/export.csv
  • 需要的外部依赖库:boto

你可以通过在URL中传递user/pass来完成AWS认证,或者也可以通过下列的设置来完成:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

标准输出
feed输出到Scrapy进程的标准输出

  • URL scheme:stdout
  • URL样例:stdout
  • 不需要外部依赖库

设定

配置feed输出的设定:

  • **FEED_URL:**输出feed的URL。
  • **FEED_FORMAT:**输出feed的序列化格式。
  • **FEED_STORE_EMPTY:**是否输出空feed。
  • **FEED_STORAGES:**包含项目支持的额外feed存储端的字典。字典的键是URL协议,值是存储类的路径。
  • FEED_STORAGES_BASE
    Default:
{
    '': 'scrapy.contrib.feedexport.FileFeedStorage',
    'file': 'scrapy.contrib.feedexport.FileFeedStorage',
    'stdout': 'scrapy.contrib.feedexport.StdoutFeedStorage',
    's3': 'scrapy.contrib.feedexport.S3FeedStorage',
    'ftp': 'scrapy.contrib.feedexport.FTPFeedStorage',
}

包含Scrapy内置支持的feed存储端的字典
FEED_EXPORTERS
包含项目支持的额外输出器的字典,该字典的键是URL协议,值是Item输出器类的路径。
FEED_EXPORTERS_BASE
Default:

FEED_EXPORTERS_BASE = {
    'json': 'scrapy.contrib.exporter.JsonItemExporter',
    'jsonlines': 'scrapy.contrib.exporter.JsonLinesItemExporter',
    'csv': 'scrapy.contrib.exporter.CsvItemExporter',
    'xml': 'scrapy.contrib.exporter.XmlItemExporter',
    'marshal': 'scrapy.contrib.exporter.MarshalItemExporter',
}

包含Scrapy内置支持的feed输出器的字典。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值