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預設認為由...