饲料出口

新版本0.10。

实施刮板时最常需要的功能之一是能够正确地存储刮削的数据,并且经常地,这意味着生成具有被刮除的数据(通常称为“出口馈送”)的其他系统消耗的“导出文件” 。

Scrapy通过Feed导出功能提供了这种功能,允许您使用多个序列化格式和存储后端来生成包含已刮取的项目的Feed。

序列化格式

为了序列化已刮除的数据,Feed导出使用Item出口。这些格式支持开箱即用:

JSON

JSON行

CSV

XML

但您也可以通过FEED_EXPORTERS设置扩展支持的格式。

JSON

FEED_FORMAT:json

使用的出口商:JsonItemExporter

如果您使用大型Feed的JSON,请参阅此警告。

JSON行

FEED_FORMAT:jsonlines

使用的出口商:JsonLinesItemExporter

CSV

FEED_FORMAT:csv

使用的出口商:CsvItemExporter

要指定要导出的列,它们的顺序使用FEED_EXPORT_FIELDS。其他饲料出口商也可以使用此选项,但对于CSV非常重要,因为与许多其他导出格式不同,CSV使用固定标题。

XML

FEED_FORMAT:xml

使用的出口商:XmlItemExporter

泡菜

FEED_FORMAT:泡菜

使用的出口商:PickleItemExporter

元帅

FEED_FORMAT:元帅

使用的出口商:MarshalItemExporter

储量

使用Feed导出时,您可以使用URI定义在哪里存储Feed(通过FEED_URI设置)。 Feed导出支持由URI方案定义的多个存储后端类型。

支持的存储后端是:

本地文件系统

FTP

S3(需要botocore或boto)

标准输出

如果所需的外部库不可用,某些存储后端可能不可用。例如,S3后端仅在安装了botocore或boto库时可用(Scrapy仅在Python 2上支持boto)。

存储URI参数

存储URI还可以包含在创建Feed时被替换的参数。这些参数是:

%(时间)s - 在创建Feed时被时间戳替换

%(name)s - 被替换为蜘蛛名称

任何其他命名参数都被同名的spider属性替换。例如,%(site_id)将在创建Feed的时刻被spider.site_id属性替换。

这里有一些例子来说明:

使用每个蜘蛛一个目录存储在FTP中:

的ftp://用户:[email protected]/scraping/feeds/%(名称)S /%(时间)s.json

在S3中存储每个蜘蛛使用一个目录:

S3:// mybucket /刮削/馈送/%(名称)S /%(时间)s.json

存储后端

本地文件系统

馈送存储在本地文件系统中。

URI方案:文件

示例URI:file:///tmp/export.csv

必需的外部库:无

请注意,对于本地文件系统存储(仅限),如果指定绝对路径(如/tmp/export.csv),则可以省略该方案。这只适用于Unix系统。

FTP

Feed存储在FTP服务器中。

URI方案:ftp

示例URI:ftp:// user:[email protected]/path/to/export.csv

必需的外部库:无

S3

Feed存储在Amazon S3上。

URI方案:s3

示例URI:

S3://mybucket/path/to/export.csv

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

必需的外部库:botocore或boto

可以将URI凭据作为URI中的用户/密码传递,也可以通过以下设置传递:

AWS_ACCESS_KEY_ID

AWS_SECRET_ACCESS_KEY

标准输出

Feed被写入Scrapy过程的标准输出。

URI方案:stdout

示例URI:stdout:

必需的外部库:无

设置

这些是用于配置Feed导出的设置:

FEED_URI(强制性)

FEED_FORMAT

FEED_STORAGES

FEED_EXPORTERS

FEED_STORE_EMPTY

FEED_EXPORT_ENCODING

FEED_EXPORT_FIELDS

FEED_EXPORT_INDENT

FEED_URI

默认值:无

导出订阅源的URI。有关支持的URI方案,请参阅存储后端。

启用Feed导出需要此设置。

FEED_FORMAT

用于供稿的序列化格式。有关可能的值,请参见序列化格式。

FEED_EXPORT_ENCODING

默认值:无

用于饲料的编码。

如果未设置或设置为无(默认),它使用UTF-8除JSON输出之外的所有内容,由于历史原因使用安全数字编码(\ uXXXX序列)。

如果你想要UTF-8的JSON也可以使用utf-8。

FEED_EXPORT_FIELDS

默认值:无

要导出的字段列表,可选。示例:FEED_EXPORT_FIELDS = [“foo”,“bar”,“baz”]。

使用FEED_EXPORT_FIELDS选项来定义要导出的字段及其顺序。

当FEED_EXPORT_FIELDS为空或无(默认)时,Scrapy使用在蜘蛛正在屈服的dicts或Item子类中定义的字段。

如果导出者需要一组固定的字段(对于CSV导出格式就是这种情况),FEED_EXPORT_FIELDS为空或无,则Scrapy会尝试从导出的​​数据中推断出字段名称 - 目前它使用第一个项目的字段名称。

FEED_EXPORT_INDENT

默认值:0

用于缩小每个级别的输出的空间量。如果FEED_EXPORT_INDENT是非负整数,则数组元素和对象成员将以该缩进级别打印。缩进级别0(默认值)或负值将将每个项目置于新行上。无选择最紧凑的表示。

目前仅由JsonItemExporter和XmlItemExporter实现,即导出为.json或.xml时。

FEED_STORE_EMPTY

默认值:False

是否导出空Feed(即没有项目的Feed)。

FEED_STORAGES

默认值:{}

包含项目支持的附加Feed存储后端的dict。密钥是URI方案,值是存储类的路径。

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',

}

包含Scrapy支持的内置Feed存储后端的dict。您可以通过在FEED_STORAGES中为其URI方案分配None来禁用任何这些后端。例如,要禁用内置的FTP存储后端(不需要替换),请将其放在您的settings.py中:

FEED_STORAGES = {

'ftp':无,

}

FEED_EXPORTERS

默认值:{}

包含您的项目支持的额外出口商的dict。 键是序列化格式,值是Item导出器类的路径。

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',

}

包含Scrapy支持的内置Feed出口商的dict。 您可以通过在FEED_EXPORTERS中为其序列化格式分配None来禁用任何这些出口商。 例如,要禁用内置的CSV导出器(不需要替换),请将其放在settings.py中:

FEED_EXPORTERS = {

 'csv':无,

}

results matching ""

    No results matching ""