Scrapy学习过程之四:Feed Export

本文介绍了Scrapy的数据导出流程,包括Serialization formats如JSON、CSV等,Storages如Local Filesystem、FTP、S3,并详细讲解了FEED_URI、FEED_FORMAT等设置参数,以及如何自定义存储后端和序列化方式。

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

参考:https://docs.scrapy.org/en/latest/topics/feed-exports.html#topics-feed-exports

整体架构图:

Scrapy architecture

SPIDER提取出的数据是dict,从上图可以看出,会将这些数据发送给ENGINE,然后ENGINE再将数据交给ITEM PIPELINES。

Serialization formats

Scrapy提供了几种内置的方法,能将dict转换成常见的数据格式,开箱即用。

  • JSON
  • JSON Line
  • CSV
  • XML

以上是Scrapy内置的序列化dict的方法,开发者也可以通过设置FEED_EXPORTERS进行自定义扩展,稍后展开,这个东西就是设置一个开发者自己实现的一个EXPORTER。

Storages

格式转换有了,接下来就是把转换好的数据存放在什么地方的问题。Scrapy通过设置一个URI指定,参数是FEED_URL,稍后展开。

Scrapy支持的内置存储后端类型:

  • Local Filesystem
  • FTP
  • S3
  • Standard Output

有些存储后端需要另外安装依赖包,如S3需要安装botocore与boto。

Storage URI parameters

设置存储后端的URI可以包含可替换点位符,当真正写数

V2025-03-18 15:57:52 [scrapy.utils.log] INFO: Scrapy 2.11.2 started (bot: weibo) 2025-03-18 15:57:52 [scrapy.utils.log] INFO: Versions: lxml 5.3.1.0, libxml2 2.11.7, cssselect 1.2.0, parsel 1.9.1, w3lib 2.2.1, Twisted 24.11.0, Python 3.8.5 (t ags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)], pyOpenSSL 25.0.0 (OpenSSL 3.4.1 11 Feb 2025), cryptography 44.0.1, Platform Windows-10-10.0.22621-SP0 2025-03-18 15:57:52 [weibo_comment] INFO: Reading start URLs from redis key 'weibo_comment:start_urls' (batch size: 16, encoding: utf-8) 2025-03-18 15:57:52 [scrapy.addons] INFO: Enabled addons: [] 2025-03-18 15:57:52 [asyncio] DEBUG: Using selector: SelectSelector 2025-03-18 15:57:52 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor 2025-03-18 15:57:52 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.windows_events._WindowsSelectorEventLoop 2025-03-18 15:57:52 [scrapy.extensions.telnet] INFO: Telnet Password: ed3efe598fe58086 2025-03-18 15:57:52 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.logstats.LogStats'] 2025-03-18 15:57:52 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'weibo', 'DOWNLOAD_DELAY': 2, 'DUPEFILTER_CLASS': 'scrapy_redis.dupefilter.RFPDupeFilter', 'FEED_EXPORT_ENCODING': 'utf-8', 'NEWSPIDER_MODULE': 'weibo.spiders', 'REQUEST_FINGERPRINTER_IMPLEMENTATION': '2.7', 'ROBOTSTXT_OBEY': True, 'SCHEDULER': 'scrapy_redis.scheduler.Scheduler', 'SPIDER_MODULES': ['weibo.spiders'], 'TWISTED_REACTOR': 'twisted.internet.asyncioreactor.AsyncioSelectorReactor'} Unhandled error in Deferred: 2025-03-18 15:57:52 [twisted] CRITICAL: Unhandled error in Deferred: Traceback (most recent call last): File "e:\python\lib\site-packages\twisted\internet\defer.py", line 2017, in _inlineCallbacks result = context.run(gen.send, result) File "e:\python\lib\site-packages\scrapy\crawle
最新发布
03-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值