Python版本管理:pyenv和pyenv-virtualenv
Scrapy爬虫入门教程一 安装和基本使用
Scrapy爬虫入门教程二 官方提供Demo
Scrapy爬虫入门教程三 命令行工具介绍和示例
Scrapy爬虫入门教程四 Spider(爬虫)
Scrapy爬虫入门教程五 Selectors(选择器)
Scrapy爬虫入门教程六 Items(项目)
Scrapy爬虫入门教程七 Item Loaders(项目加载器)
Scrapy爬虫入门教程八 交互式 shell 方便调试
Scrapy爬虫入门教程九 Item Pipeline(项目管道)
Scrapy爬虫入门教程十 Feed exports(导出文件)
Scrapy爬虫入门教程十一 Request和Response(请求和响应)
Scrapy爬虫入门教程十二 Link Extractors(链接提取器)

  • 导出文件

    • 序列化格式

      • JSON
      • JSON lines
      • CSV
      • XML
      • Pickle
      • Marshal
    • 存储
    • 存储URI参数
    • 存储后端
      • 本地文件系统
      • FTP
      • S3
      • 标准输出
    • 设置
      • FEED_URI
      • FEED_FORMAT
      • FEED_EXPORT_ENCODING
      • FEED_EXPORT_FIELDS
      • FEED_STORE_EMPTY
      • FEED_STORAGES_BASE
      • FEED_EXPORTERS
      • FEED_EXPORTERS_BASE

开发环境:
Python 3.6.0 版本 (当前最新)
Scrapy 1.3.2 版本 (当前最新)

导出文件

新版本0.10。

实现爬虫时最常需要的特征之一是能够正确地存储所过滤的数据,并且经常意味着使用被过滤的数据(通常称为“export feed”)生成要由其他系统消耗的“导出文件” 。

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

序列化格式

为了序列化抓取的数据,Feed导出使用项导出器。这些格式是开箱即用的:

  • JSON
  • JSON lines
  • CSV
  • XML

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

JSON

  • FEED_FORMAT: json
  • 使用出口: JsonItemExporter
  • 如果您对大型Feed使用JSON,请参阅此警告。

JSON lines

  • FEED_FORMAT: jsonlines
  • 使用出口: JsonLinesItemExporter

CSV

  • FEED_FORMAT: csv
  • 使用出口: CsvItemExporter
  • 指定要导出的列及其顺序使用 FEED_EXPORT_FIELDS。其他Feed导出程序也可以使用此选项,但它对CSV很重要,因为与许多其他导出格式不同,CSV使用固定标头。

XML

  • FEED_FORMAT: xml
  • 使用出口: XmlItemExporter

Pickle

  • FEED_FORMAT: pickle
  • 使用出口: PickleItemExporter

Marshal

  • FEED_FORMAT: marshal
  • 使用出口: MarshalItemExporter

存储

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

支持开箱即用的存储后端包括:

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

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


存储URI参数

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

  • %(time)s - 在创建订阅源时由时间戳替换
  • %(name)s - 被蜘蛛名替换

任何其他命名参数将替换为同名的spider属性。例如, 在创建订阅源的那一刻,%(site_id)s将被spider.site_id属性替换。

这里有一些例子来说明:

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

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

存储后端

本地文件系统

订阅源存储在本地文件系统中。

URI方案: file
示例URI: file:///tmp/export.csv
所需的外部库:none
请注意,(仅)对于本地文件系统存储,如果指定绝对路径,则可以省略该方案/tmp/export.csv。这只适用于Unix系统。

FTP

订阅源存储在FTP服务器中。

  • URI方案: ftp
  • 示例URI: ftp://user:pass@ftp.example.com/path/to/export.csv
  • 所需的外部库:none

S3

订阅源存储在Amazon S3上。

  • URI方案: s3
  • 示例URI:
    • s3://mybucket/path/to/export.csv
    • s3://aws_key:aws_secret@mybucket/path/to/export.csv
  • 所需的外部库:botocore或boto

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

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

标准输出

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

  • URI方案: stdout
  • 示例URI: stdout:
  • 所需的外部库:none

设置

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

  • FEED_URI (强制性)
  • FEED_FORMAT
  • FEED_STORAGES
  • FEED_EXPORTERS
  • FEED_STORE_EMPTY
  • FEED_EXPORT_ENCODING
  • FEED_EXPORT_FIELDS

FEED_URI

默认: None

导出Feed的URI。请参阅支持的URI方案的存储后端。

启用Feed导出时需要此设置。

FEED_FORMAT

要用于Feed的序列化格式。有关可能的值,请参阅 序列化格式。

FEED_EXPORT_ENCODING

默认: None

要用于Feed的编码。

如果取消设置或设置为None(默认),它使用UTF-8除了JSON输出,\uXXXX由于历史原因使用安全的数字编码(序列)。

使用utf-8,如果你想UTF-8 JSON了。

FEED_EXPORT_FIELDS

默认: None

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

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

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

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

FEED_STORE_EMPTY

默认: False

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

FEED_STORAGES
默认: {}

包含您的项目支持的其他Feed存储后端的字典。键是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存储后端的字典。您可以通过分配其中None的URI方案 来禁用这些后端FEED_STORAGES。例如,要禁用内置FTP存储后端(无替换),请将其放置在settings.py:

FEED_STORAGES = {'ftp': None,
}

FEED_EXPORTERS

默认: {}

包含您的项目支持的其他导出器的字典。键是序列化格式,值是Item exporter类的路径。

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。您可以通过分配其中None的序列化格式来禁用任何这些导出器FEED_EXPORTERS。例如,要禁用内置的CSV导出器(无替换),请将其放置在settings.py:

FEED_EXPORTERS = {'csv': None,
}

Scrapy爬虫入门教程十 Feed exports(导出文件)相关推荐

  1. Scrapy爬虫入门教程五 Selectors(选择器)

    Scrapy爬虫入门教程一 安装和基本使用 Scrapy爬虫入门教程二 官方提供Demo Scrapy爬虫入门教程三 命令行工具介绍和示例 Scrapy爬虫入门教程四 Spider(爬虫) Scrap ...

  2. python3爬虫入门教程-总算懂得python3.4爬虫入门教程

    Python是一款功能强大的脚本语言,具有丰富和强大的库,重要的是,它还具有很强的可读性,易用易学,非常适合编程初学者入门.以下是小编为你整理的python3.4爬虫入门教程 环境配置:下载Pytho ...

  3. 爬虫python入门_python爬虫入门教程有哪些?适合的只有这三个

    python爬虫是现在包括以后一种很重要的获取数据的方式. 当然,也因为网络爬虫本身也很有趣,所以很多人了解过一次爬虫后,就产生了浓厚的兴趣. 但是,想学python爬虫的话,应该看什么python爬 ...

  4. python很全的爬虫入门教程

    python很全的爬虫入门教程 一.爬虫前的准备工作 首先,我们要知道什么是爬虫 1.什么是网络爬虫? 网络爬虫是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁 ...

  5. Python爬虫入门教程导航帖

    转载:梦想橡皮擦 https://blog.csdn.net/hihell/article/details/86106916 **Python爬虫入门教程导航,目标100篇** 本系列博客争取把爬虫入 ...

  6. Python爬虫入门教程:博客园首页推荐博客排行的秘密

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

  7. python教程是用什么博客写的-Python爬虫入门教程:博客园首页推荐博客排行的秘密...

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

  8. 爬虫入门教程 —— 1

    爬虫入门教程 -1 很想做一些爬虫的基础性的教程,来与大家共同分享我的一些小经验, 我将以我认为的方式为大家讲解网络爬虫,如果你没有编程基础,对网络爬虫有兴趣,开始可能稍微有一些小难度,不过我希望能给 ...

  9. 推荐一部python教程_Python爬虫入门教程:博客园首页推荐博客排行的秘密

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

  10. python爬虫入门教程--优雅的HTTP库requests(二)

    requests 实现了 HTTP 协议中绝大部分功能,它提供的功能包括 Keep-Alive.连接池.Cookie持久化.内容自动解压.HTTP代理.SSL认证等很多特性,下面这篇文章主要给大家介绍 ...

最新文章

  1. linux 中 timeval结构体 - Neddy11 - 博客园
  2. Scala安装时的坑
  3. jvm中的垃圾收集器serial、parNew、parallel Scavenge;serial old、parallel old、CMS、G1
  4. IOS sqlite数据库增删改查
  5. InstallShield自定义安装界面
  6. RabbitMQ自学之路(九)——RabbitMQ实现延时队列的两种方式
  7. 基于 CentOS Mysql 安装与主从同步配置详解
  8. 对Linux课程内容的建议,Linux课程笔记 Day01 课程内容总结(示例代码)
  9. 你不知道的 字符集和编码(编码字符集与字符集编码)
  10. *** glibc detected *** malloc(): memory corruption
  11. Hibernate SQL 查询
  12. 怎么样测试需要登录的接口?需要登录的接口怎么测试性能?
  13. js call和apply方法小结
  14. FFMPEG详细参数
  15. Android 代码设置来电铃声
  16. 【代码】Android和java平台 DES加密解密互通程序及其不能互通的原因
  17. 单片机定时器(65536-x)/256
  18. echarts动态legend不变更
  19. 2021-05-24 Nyquist图背后的信息
  20. activeroot翻译,Active翻译

热门文章

  1. windows2016安装.net3.5错误:0x80070057;错误:0x800f081f
  2. ios-webkit-debug-proxy 说明
  3. linux下7z文件解压命令
  4. 在鹅厂工作1到11年的程序媛
  5. BigDecimal的除法
  6. gmap实现地图的旋转
  7. linux系统启用夏令时,在Debian Linux中禁用夏令时
  8. Python中seek()函数的使用方法--一文读懂
  9. linux seek原理,Linux内核:seek机制
  10. IIS站点部署后频繁弹出“Visual Studio实时调试器”问题