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']