scrapy指定item输出项顺序到csv

本文介绍如何在Scrapy爬虫项目中实现CSV文件的有序导出,通过自定义CSV导出器并设置特定的字段顺序,确保导出的数据按照预设顺序排列,避免因字段顺序混乱导致的数据错误。

scrapy指定输出项顺序到csv

scrapy -o csv格式输出的时候,发现字段/item/Field的顺序不是在items.py或者在scrapy中指定的顺序,如果后续有继续读取csv文件的时候,因为不是按指定顺序排列,很可能字段会搞错。 本文描述如何在输出csv的时候指定顺序字段。

  1. 在scrapy的spiders同层目录,新建my_project_csv_item_exporter.py文件内容如下(文件名可改,目录定死)
 
1
2
3
4
5
6
7
8
9
10
11
 
from scrapy.conf import settings
from scrapy.contrib.exporter import CsvItemExporter
class MyProjectCsvItemExporter(CsvItemExporter):
def __init__(self, *args, **kwargs):
delimiter = settings.get('CSV_DELIMITER', ',')
kwargs['delimiter'] = delimiter
fields_to_export = settings.get('FIELDS_TO_EXPORT', [])
if fields_to_export :
kwargs['fields_to_export'] = fields_to_export
super(
MyProjectCsvItemExporter, self).__init__(*args, **kwargs)
  1. 在同层目录,settings.py文件新增如下内容(指定item,field顺序)
 
1
2
3
4
5
6
7
8
9
 
FEED_EXPORTERS = {
'csv': 'my_project.my_project_csv_item_exporter.MyProjectCsvItemExporter',
} #这里假设你的project名字为my_project
FIELDS_TO_EXPORT = [
'id',
'name',
'email',
'address'
]
  1. 在同层目录,settings.py文件指定分隔符
 
1
 
CSV_DELIMITER = '\t'

全部设定完后,执行scrapy crawl spider -o spider.csv的时候,字段就按顺序来了。

原文链接:http://www.zhiliaonote.com/2017/10/python+scrapy+item/

Scrapy可以方便地将数据保存到CSV文件中。在Scrapy目的pipelines.py文件中,可以添加一个CSVExportPipeline类来实现将数据保存到CSV文件中的功能。以下是一个示例: ``` import csv class CSVExportPipeline(object): def __init__(self): self.file = open("data.csv", "w") self.writer = csv.writer(self.file) def process_item(self, item, spider): row = [] for key in item.keys(): row.append(item[key]) self.writer.writerow(row) return item def close_spider(self, spider): self.file.close() ``` 在这个例子中,我们创建了一个CSVExportPipeline类,该类在初始化时打开一个名为“data.csv”的文件,然后在process_item方法中将每个item的值写入到该文件中。最后,在关闭spider时,我们关闭文件。请注意,这里的数据写入是按照字典键的顺序进行的,因此如果您希望按照不同的顺序写入数据,可以进行相应的修改。 要使用这个pipeline,您需要在settings.py文件中将其添加到PIPELINES列表中: ``` ITEM_PIPELINES = { 'myproject.pipelines.CSVExportPipeline': 300, } ``` 在这个例子中,我们将CSVExportPipeline添加到了PIPELINES列表中,并给它指定了一个优先级(300)。这个优先级是可选的,但是如果您有多个pipeline,它可以帮助您确保它们按照正确的顺序运行。 现在,当您运行Scrapy爬虫时,它将自动将数据保存到名为“data.csv”的文件中。如果您需要将数据保存到不同的文件中,可以在CSVExportPipeline类中进行相应的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值