实现爬虫时最经常提到的需求就是能合适的保存爬取到的数据,或者说,生成一个带有爬取数据的“输出文件”(通常叫“输出 feed”),来供其它系统使用。

Scrapy 自带了 Feed 输出,并且支持多种序列化格式(serialization format)及存储方式(storage backends)。

序列化方式(serialization formats)

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

  • JSON
  • JSON Lines
  • CSV
  • XML

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

JSON

  • FEED_FORMAT: json
  • 使用的 exporter: JsonItemExporter
  • 大数据量情况下使用 JSON 请参见 这个警告

JSON lines

  • FEED_FORMAT: jsonlines
  • 使用的 exporter: JsonLinesItemExporter

CSV

  • FEED_FORMAT: csv
  • 使用的 exporter: CsvItemExporter

XML

  • FEED_FORMAT: xml
  • 使用的 exporter: XmlItemExporter

Pickle

  • FEED_FORMAT: pickle
  • 使用的 exporter: PickleItemExporter

Marshal

  • FEED_FORMAT: marshal
  • 使用的 exporter: MarshalItemExporter

存储(Storages)

使用 feed 输出时可以通过使用 URL(通过 FEED_URI 设置)来定义存储端。feed 输出支持 URI 方式支持的多种存储后端类型。

自带支持的存储后端有:

  • 本地文件系统
  • FTP
  • S3(需要 boto)
  • 标注输出

有些存储后端会因为所需外部库未安装而不可用。例如,S3 只有在 boto 库安装的情况下才可用。

存储 URI 参数

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

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

其它命名的参数会被 spider 同名的属性所覆盖。例如,当 feed 被创建时,%(site_id)s 将会被 spider.site_id 属性所覆盖。

示例:

  • 存储在 FTP,每个 spider 一个目录:

    • ftp://user:password@ftp.example.com/scraping/feeds/%(name)s/%(time)s.json
  • 存储在 S3,每个 spider 一个目录:
    • s3://mybucket/scraping/feeds/%(name)s/%(time)s.json

存储端(Storage backends)

本地文件系统

将 feed 存储在本地系统。

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

注意: (只有)存储在本地文件系统时,您可以指定一个绝对路径 /tmp/export.csv 并忽略协议(scheme)。不过这仅仅只能在 Unix 系统中工作。

FTP

将 feed 存储在 FTP 服务器。

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

S3

将 feed 存储在 Amazon S3 。

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

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

AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY

标准输出

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

  • URI scheme: stdout
  • URI 样例: stdout:
  • 需要的外部依赖库: none

设定(settings)

这些是配置 feed 输出的设定:

  • FEED_URI (必须)
  • FEED_FORMAT
  • FEED_STORAGES
  • FEED_EXPORTERS
  • FEED_STORE_EMPTY

FEED_URI

Default:None

输出 feed 的 URI。支持的 URI 协议请参见存储端(Storage backends)

为了启用 feed 输出,该设定是必须的。

FEED_FORMAT

输出 feed 的序列化格式。可用的值请参见序列化方式(Serialization formats)

FEED_STORE_EMPTY

Default:False

是否输出空 feed(没有 item 的 feed)。

FEED_STORAGES

Default::{}

包含项目支持的额外 feed 存储端的字典。 字典的键(key)是 URI 协议(scheme),值是存储类(storage class)的路径。

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

Default::{}

包含项目支持的额外输出器(exporter)的字典。 该字典的键(key)是 URI 协议(scheme),值是 Item 输出器(exporter) 类的路径。

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

包含 Scrpay 内置支持的 feed 输出器(exporter)的字典。

scrapy之feeds相关推荐

  1. Scrapy Architecture overview--官方文档

    原文地址:https://doc.scrapy.org/en/latest/topics/architecture.html This document describes the architect ...

  2. Frequently Asked Questions — Scrapy 0.15.1 documentation

    Frequently Asked Questions - Scrapy 0.15.1 documentation Frequently Asked Questions¶ How does Scrapy ...

  3. 《Learning Scrapy》(中文版)第8章 Scrapy编程

    序言 第1章 Scrapy介绍 第2章 理解HTML和XPath 第3章 爬虫基础 第4章 从Scrapy到移动应用 第5章 快速构建爬虫 第6章 Scrapinghub部署 第7章 配置和管理 第8 ...

  4. Scrapy爬取知乎Python专题精华,连答主头像都给爬下来,不放过一切

    前些天写的一篇"我与Scrapy的初次相识,理论+实战入门Scrapy "都上首页推荐了,到现在浏览量还没破百,难受. 写的不好大概,不过只要有一人看,都是鼓励,一直写,一直积淀, ...

  5. Scrapy: Feed exports

    Feed exports New in version 0.10. 当执行抓取的时候,一个最经常需要的特性就是正确并经常的保存榨取的数据,也就是说生成有抓取来的数据的导出文件(通常叫做export f ...

  6. 初识 Scrapy - Feed导出

    文章目录 1. 前言 2. 序列化格式 2.1 JSON 2.2 JSON lines 2.3 CSV 2.4 XML 2.5 Pickle 2.6 Marshal 3. 存储 3.1 存储的URI参 ...

  7. 《Learning Scrapy》(中文版)第7章 配置和管理

    序言 第1章 Scrapy介绍 第2章 理解HTML和XPath 第3章 爬虫基础 第4章 从Scrapy到移动应用 第5章 快速构建爬虫 第6章 Scrapinghub部署 第7章 配置和管理 第8 ...

  8. Python 爬虫框架Scrapy安装汇总

    传统方式安装Scrapy(慎用) 练习了基本的操作之后,当然就要找框架来进行爬虫实验啊.于是就在网上找Windows 64安装Scrapy的方法,查到的都是非常繁琐的安装方式,由于Scrapy有很多个 ...

  9. Python:爬虫框架Scrapy的安装与基本使用

    一.简单实例,了解基本. 1.安装Scrapy框架 这里如果直接pip3 install scrapy可能会出错. 所以你可以先安装lxml:pip3 install lxml(已安装请忽略). 安装 ...

最新文章

  1. Windows Azure Cloud Service (17) Role Endpoint
  2. java-commons-HttpClient超时设置setConnectionTimeout和setSoTimeout
  3. GC算法-引用计数法
  4. 七个高效的文本编辑习惯(以Vim为例)
  5. 快点搜quickso.cn
  6. linux 重庆mysql_Linux服务器上MYSQL的安装
  7. 希捷发布新NAS产品为小型企业提供存储便利性
  8. 机械臂手眼标定原理及代码
  9. 12星座的出生年月日性格_十二星座的出生日期及对应性格
  10. 2100 年的世界会怎样?特拉华教授用机器学习开启“上帝之眼”
  11. 在SpringBoot中实现通用Auth认证,有哪几种方式?
  12. 免费多平台思维导图软件
  13. 阿里巴巴中台战略思想与架构实战笔记
  14. 庆祝祖国60岁生日!
  15. 《鱿鱼游戏》我怕了,还是整点阳间的游戏吧,Python版“碰糖”来袭—你能过几关?
  16. pip install paddlepaddle 报错 command ‘/usr/bin/gcc‘ failed with exit code 1 或 command ‘gcc‘ 报错
  17. 2020年哨兵数据批量下载(USGS)
  18. 普通卷积、Depthwise(DW)卷积、Pointwise(PW)卷积、Atrous卷积
  19. Unity HybridCLR热更新技术实现
  20. JPG,PNG,BMP图片无损压缩软件

热门文章

  1. PHP代码审计系列(一) 基础:方法、思路、流程
  2. 第七章:债券投资收益分析与债券合成
  3. 【历史上的今天】5 月 8 日:jQuery 之父诞生;闪存的发明者出生;戴尔收购 Alienware
  4. 2020年机械员-岗位技能(机械员)考试及机械员-岗位技能(机械员)考试资料
  5. 模拟3d星空python_Python Blender 绘制3D宇宙飞船
  6. 什么是 MVVM ?
  7. 寒江独钓——读书笔记2
  8. 网络爬虫360手机助手搜索功能
  9. android手机助手哪个好,手机助手哪个好用
  10. Redis模糊查询及批量删除key