栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

feedexports-scrapy框架9-python

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

feedexports-scrapy框架9-python

文章目录
    • 1 前言
    • 2 序列化格式
    • 3 存储
      • 3.1 存储URI 参数
      • 3.2 存储后端
      • 3.3 实例:传输数据到FTP
    • 4 Item 过滤和内置插件
    • 5 配置
    • 6 后记

1 前言

Scrapy 通过 Feed Exports 开箱即用地提供了此功能,它允许您使用多种序列化格式和存储后端生成带有抓取项目的 Feed,这里序列化格式就是XxxItemExporter。

2 序列化格式

常见的序列化格式

  • JSON
  • JSON lines
  • CSV
  • XML
  • Pickle
  • Marshal
3 存储 3.1 存储URI 参数

常用的URI参数

  • %(time)s:时间戳
  • %(name)s:爬虫名

这些参数会被spider同名属性替换,URI示例:

  • 存储到FTP:ftp://user:password@ftp.example.com/scraping/feeds/%(name)s/%(time)s.json
3.2 存储后端

常用的存储后端:

后端URI scheme示例是否需要额外的库
local filesystem本地filefile:///tmp/export.csv否
FTPftpftp://user:pass@ftp.example.com/path/to/export.csv否
Google Cloud Storage(GCS)gsgs://mybucket/path/to/export.csvgoogle-cloud-storage
  • 知识点:延迟文件传输
    • 当爬取到item后,延迟文件传输不好立即传输给feed uri。而是把爬取的内容存储在一个临时文件,当爬取完成后,在把数据传输给feed URI。如果想早点开始传输,通过设置FEED_EXPORT_BATCH_ITEM_COUNT把items分配到多个文件,指定每个文件最大item数。这样,当文件存储达到阈值,就会传输数据。
3.3 实例:传输数据到FTP
  • 环境搭建:

    • 这里直接用的集成环境的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
    
  • 结果示例:

4 Item 过滤和内置插件

把数据传输给feed URI之前,还可以执行过滤掉不想要的数据。这里不再详述,这个工作一般之前就做完了。

一些内置插件,主要用于压缩数据,这里也不再详述。

5 配置

配置分为单独配置和全局配置,这里主要列举一些全局配置,单独配置自行查阅文档。

配置默认值描述
FEED_EXPORT_ENCODINGNone导出编码
FEED_EXPORT_FIELDSNone默认全部导出,可以用于指定导出顺序
FEED_EXPORTERS{}指定导出序列化格式
FEED_EXPORT_BATCH_ITEM_COUNT0配合参数用于拆分数据到多个文件
6 后记

代码仓库:https://gitee.com/gaogzhen/python-study.git

QQ群:433529853

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/966310.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号