scrapy 自定义数据导出格式

Excel 格式

在项目中创建一个 my_exporters.py(与 setting.py 同级目录),在其中实现 ExcellItemExporter

from scrapy.exporters import BaseItemExporter
import xlwt


class ExcelItemExporter(BaseItemExporter):
    def __init__(self,file,**kwargs):
        self._configure(kwargs)
        self.file = file
        self.wbook = xlwt.Workbook()
        self.wsheet = self.wbook.add_sheet('scrapy') #scrapy 为表格的标签名
        self.row = 0
        
    def finish_exporting(self):
        self.wbook.save(self.file)
        
    def export_item(self, item):
        fields = self._get_serialized_fields(item)
        for col,v in enumerate(x for _,x in fields):
            self.wsheet.write(self.row,col,v)
        self.row += 1
  • 使用第三方库 xlwt 将数据写入 Excel 文件
  • 在构造器方法中创建 Workbook 对象和 Worksheet 对象,并初始化用来记录写入行坐标的 self.row
  • 在 export_item 方法中调用基类 _get_serialized_fields 方法,获得 item 所有字段的迭代器,然后调用 self.wsheet.write 方法将各字段写入 Excel 表格
  • finish_exporting 方法在所有数据都被写入 Excel 表格后被调用,在该方法中调用 self.wbook.save 方法将 Excel 表格写入 Excel 文件

 

完成后在 setting.py 中添加如下代码:

book_spider 为项目名称

FEED_EXPORTERS = {'excel':'book_spider.my_exporters.ExcelItemExporter'}

 

以 -t excel 为参数运行

scrapy crawl -t excel -o books.xls books

 

 

导出 csv 文件,指定各列的次序

可在 setting.py 中使用 FEED_EXPORT_FIELDS,在其中添加如下示例

      FEED_EXPORT_FIELDS = ['upc','name','price','stock','review_rating','review_num']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值