- 1 前言
- 2 序列化格式
- 3 存储
- 3.1 存储URI 参数
- 3.2 存储后端
- 3.3 实例:传输数据到FTP
- 4 Item 过滤和内置插件
- 5 配置
- 6 后记
Scrapy 通过 Feed Exports 开箱即用地提供了此功能,它允许您使用多种序列化格式和存储后端生成带有抓取项目的 Feed,这里序列化格式就是XxxItemExporter。
2 序列化格式常见的序列化格式
- JSON
- JSON lines
- CSV
- XML
- Pickle
- Marshal
常用的URI参数
- %(time)s:时间戳
- %(name)s:爬虫名
这些参数会被spider同名属性替换,URI示例:
- 存储到FTP:ftp://user:password@ftp.example.com/scraping/feeds/%(name)s/%(time)s.json
常用的存储后端:
| 后端 | URI scheme | 示例 | 是否需要额外的库 |
|---|---|---|---|
| local filesystem本地 | file | file:///tmp/export.csv | 否 |
| FTP | ftp | ftp://user:pass@ftp.example.com/path/to/export.csv | 否 |
| Google Cloud Storage(GCS) | gs | gs://mybucket/path/to/export.csv | google-cloud-storage |
- 知识点:延迟文件传输
- 当爬取到item后,延迟文件传输不好立即传输给feed uri。而是把爬取的内容存储在一个临时文件,当爬取完成后,在把数据传输给feed URI。如果想早点开始传输,通过设置FEED_EXPORT_BATCH_ITEM_COUNT把items分配到多个文件,指定每个文件最大item数。这样,当文件存储达到阈值,就会传输数据。
-
环境搭建:
- 这里直接用的集成环境的FTP服务器和客户端,本地搭建,端口21,图示:
-
settings.py 相关通用配置
FIELDS_TO_EXPORT = ['title', 'publish', 'approval', 'unlike', 'comment', 'collection'] FEED_EXPORT_ENCODING = 'utf-8'
-
说明:案例还是使用之前爬取csdn个人博客文章为例
-
执行:命令行命令
scrapy crawl pblog -o ftp://admin:admin@localhost/scraping/feeds/%(name)s/%(time)s.json:json
-
结果示例:
把数据传输给feed URI之前,还可以执行过滤掉不想要的数据。这里不再详述,这个工作一般之前就做完了。
一些内置插件,主要用于压缩数据,这里也不再详述。
5 配置配置分为单独配置和全局配置,这里主要列举一些全局配置,单独配置自行查阅文档。
| 配置 | 默认值 | 描述 |
|---|---|---|
| FEED_EXPORT_ENCODING | None | 导出编码 |
| FEED_EXPORT_FIELDS | None | 默认全部导出,可以用于指定导出顺序 |
| FEED_EXPORTERS | {} | 指定导出序列化格式 |
| FEED_EXPORT_BATCH_ITEM_COUNT | 0 | 配合参数用于拆分数据到多个文件 |
代码仓库:https://gitee.com/gaogzhen/python-study.git
QQ群:433529853



