scrapy爬虫之数据保存和管道

本文介绍了Scrapy爬虫中数据保存的方法,包括命令方式和配置文件方式,重点讲解了如何通过管道(Item Pipeline)来实现JSON数据的保存。Scrapy的Exporter支持多种数据导出格式,如json、csv等,而自定义数据保存格式可通过重写Exporter或利用管道实现。文章还提及了管道的主要功能,如数据清洗、有效性检查、去重和保存,并预告了接下来将探讨如何利用管道下载文件和图片。

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

数据保存

在scrapy中负责数据导出的组件被称作Exporter,scrapy支持的数据导出格式有:json、json lines、csv、XML、pickle、Marshal
如果想使用其他的格式不如Excel,可以通过重写Exporter来实现(小编一般都通过管道的方式)

scrapy中数据保存可以使用两种方式:
命令方式:scrapy crawl 标识 -t 格式 -o 文件名
配置文件方式:Exporter方式和管道的方式

命令方式
scrapy crawl 标识 -t 文件格式 -o 文件名/%(name)s/%(time)s.csv
#%(name)s:spider的名
#%(time)s:时间
配置文件方式

在settings.py文件中指定

FEED_URI = 'data/%(name)s.data'
FEED_FORMAT = 'json'
FEED_EXPORT_ENCODING = 'utf-8'
FEED_EXPORT_FIELDS = ['bookname', 'bookprice']

#说明
FEED_URI :保存文件路径
FEED_FORMAT :保存文件的格式
FEED_EXPORT_ENCODING :保存文件的编码格式,json默认使用数字编码,其他都是utf-8
FEED_EXPORT_FIELDS :输出字段次序

另一种管道方式下小节说

管道

管道(item Pipeline):主要作用就是处理抓取的数据。当数据转化为item后,会传递到item Pipeline做进一步处理
作用:
清洗数据
检查抓取的数据是否有效
去重
保存数据

#pipeline实现的方法

process_item(self, item, spider):数据处理工作都在此方法中完成,item是爬取的数据
open_spider(self, spider): 爬虫开启时执行,一般用来做初始化的工作,比如连接数据库
close_spider(self, spoder):当爬虫关闭时执行,可以用来做首尾工作,如关闭数据库连接
from_crawl(cls, crawler):调用此方法会通过初始化crawler对象返回一个pipeline实例。通过crawler对象可以返回scrapy的所有核心组件,如全局配置信息
实现保存问json数据
import json

class ToscrapebookPipeline:

    def open_spider(self, spider):
        self.file = open('book.json', 'w')

    def close_spider(self, spider):
        self.file.close()

    def process_item(self, item, spider):
        line = json.dumps(dict(item), ensure_ascii = False) + '\n'
        self.file.write(line)
        return item

下一篇我们介绍如何利用管道来下载文件和图片:scrapy下载文件和图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值