scrapy匯出csv時字段的一些問題

2021-10-06 23:59:21 字數 1202 閱讀 8884

scrapy -o csv格式輸出的時候,發現輸出檔案中字段的順序不是按照items.py中的順序,也不是爬蟲檔案中寫入的順序,這樣匯出的資料因為某些字段變得不好看,此外,匯出得csv檔案不同的item之間被空行隔開,本文主要描述解決這些問題的方法。

1.欄位順序問題:

需要在scrapy的spiders同層目錄,新建csv_item_exporter.py檔案內容如下(檔名可改,目錄定死)

from scrapy.conf import settings

from scrapy.contrib.exporter import csvitemexporter

class myprojectcsvitemexporter(csvitemexporter):

definit(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)

2)在settings.py中新增以下內容

#定義輸出格式

feed_exporters =

#指定csv輸出欄位的順序

fields_to_export = [

『name』,

『title』,

『info』

]#指定分隔符

csv_delimiter = 『,』

設定完畢,執行scrapy crawl spider -o spider.csv的時候,欄位就按順序來了

2.輸出csv有空行的問題

此時你可能會發現csv檔案中有空行,這是因為scrapy預設輸出時,每個item之間的分隔符是空行

解決辦法:

在找到exporters.py的csvitemexporter類,大概在215行中增加newline="",即可。

也可以繼承重寫csvitemexporter類

讀取csv並匯出新的csv

用 editplus 開啟 csv 格式的檔案,會發現編碼為 ansi。在 ansi 裡,gbk 是專門來解決中文編碼的,是雙位元組的,不論中英文都是雙位元組。通常程式儲存檔案的編碼常為 utf 8,因此讀取 csv 檔案時,需要進行編碼轉換,把 gbk 的轉為 utf 8,匯出的時候再把 utf ...

匯出csv檔案時,處理分隔符問題

文章 csv檔案預設以英文逗號做為列分隔符,換行符作為行分隔符。如果不提供網頁形式只用命令列或二進位制程式輸出資料到csv,只需要將資料段按,分割,行按 n分割,寫入到乙個.csv檔案即可。但有時欄位裡含有,和換行符就麻煩了,資料輸出會出現混亂。這時可以使用雙引號 來將每個字段內容括起來,csv預設...

匯出csv檔案時,處理分隔符問題

csv檔案預設以英文逗號做為列分隔符,換行符作為行分隔符。如果不提供網頁形式只用命令列或二進位制程式輸出資料到csv,只需要將資料段按,分割,行按 n分割,寫入到乙個.csv檔案即可。但有時欄位裡含有,和換行符就麻煩了,資料輸出會出現混亂。這時可以使用雙引號 來將每個字段內容括起來,csv預設認為由...