scrapy之feeds
实现爬虫时最经常提到的需求就是能合适的保存爬取到的数据,或者说,生成一个带有爬取数据的“输出文件”(通常叫“输出 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相关推荐
- Scrapy Architecture overview--官方文档
原文地址:https://doc.scrapy.org/en/latest/topics/architecture.html This document describes the architect ...
- Frequently Asked Questions — Scrapy 0.15.1 documentation
Frequently Asked Questions - Scrapy 0.15.1 documentation Frequently Asked Questions¶ How does Scrapy ...
- 《Learning Scrapy》(中文版)第8章 Scrapy编程
序言 第1章 Scrapy介绍 第2章 理解HTML和XPath 第3章 爬虫基础 第4章 从Scrapy到移动应用 第5章 快速构建爬虫 第6章 Scrapinghub部署 第7章 配置和管理 第8 ...
- Scrapy爬取知乎Python专题精华,连答主头像都给爬下来,不放过一切
前些天写的一篇"我与Scrapy的初次相识,理论+实战入门Scrapy "都上首页推荐了,到现在浏览量还没破百,难受. 写的不好大概,不过只要有一人看,都是鼓励,一直写,一直积淀, ...
- Scrapy: Feed exports
Feed exports New in version 0.10. 当执行抓取的时候,一个最经常需要的特性就是正确并经常的保存榨取的数据,也就是说生成有抓取来的数据的导出文件(通常叫做export f ...
- 初识 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参 ...
- 《Learning Scrapy》(中文版)第7章 配置和管理
序言 第1章 Scrapy介绍 第2章 理解HTML和XPath 第3章 爬虫基础 第4章 从Scrapy到移动应用 第5章 快速构建爬虫 第6章 Scrapinghub部署 第7章 配置和管理 第8 ...
- Python 爬虫框架Scrapy安装汇总
传统方式安装Scrapy(慎用) 练习了基本的操作之后,当然就要找框架来进行爬虫实验啊.于是就在网上找Windows 64安装Scrapy的方法,查到的都是非常繁琐的安装方式,由于Scrapy有很多个 ...
- Python:爬虫框架Scrapy的安装与基本使用
一.简单实例,了解基本. 1.安装Scrapy框架 这里如果直接pip3 install scrapy可能会出错. 所以你可以先安装lxml:pip3 install lxml(已安装请忽略). 安装 ...
最新文章
- Windows Azure Cloud Service (17) Role Endpoint
- java-commons-HttpClient超时设置setConnectionTimeout和setSoTimeout
- GC算法-引用计数法
- 七个高效的文本编辑习惯(以Vim为例)
- 快点搜quickso.cn
- linux 重庆mysql_Linux服务器上MYSQL的安装
- 希捷发布新NAS产品为小型企业提供存储便利性
- 机械臂手眼标定原理及代码
- 12星座的出生年月日性格_十二星座的出生日期及对应性格
- 2100 年的世界会怎样?特拉华教授用机器学习开启“上帝之眼”
- 在SpringBoot中实现通用Auth认证,有哪几种方式?
- 免费多平台思维导图软件
- 阿里巴巴中台战略思想与架构实战笔记
- 庆祝祖国60岁生日!
- 《鱿鱼游戏》我怕了,还是整点阳间的游戏吧,Python版“碰糖”来袭—你能过几关?
- pip install paddlepaddle 报错 command ‘/usr/bin/gcc‘ failed with exit code 1 或 command ‘gcc‘ 报错
- 2020年哨兵数据批量下载(USGS)
- 普通卷积、Depthwise(DW)卷积、Pointwise(PW)卷积、Atrous卷积
- Unity HybridCLR热更新技术实现
- JPG,PNG,BMP图片无损压缩软件