scrapy指定item輸出項順序到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.aisun.org/2017/10/python+scrapy+item/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM