由於工作需要,將爬蟲的檔案要儲存為csv,以前只是儲存為json,但是目前網上很多方法都行不通,主要有一下兩種:
from scrapy import signals
from scrapy.contrib.exporter import csvitemexporter
class csvpipeline(object):
def __init__(self):
self.files = {}
@classmethod
def from_crawler(cls, crawler):
pipeline = cls()
crawler.signals.connect(pipeline.spider_opened, signals.spider_opened)
crawler.signals.connect(pipeline.spider_closed, signals.spider_closed)
return pipeline
def spider_opened(self, spider):
file = open('%s_items.csv' % spider.name, 'w+b')
self.files[spider] = file
self.exporter = csvitemexporter(file)
self.exporter.fields_to_export = [list with names of fields to export - order is important]
self.exporter.start_exporting()
def spider_closed(self, spider):
self.exporter.finish_exporting()
file = self.files.pop(spider)
file.close()
def process_item(self, item, spider):
self.exporter.export_item(item)
return item
第二種:
import csv
import itertools
class csvpipeline(object):
def __init__(self):
self.csvwriter = csv.writer(open('items.csv', 'wb'), delimiter=',')
self.csvwriter.writerow(['names','starts','subjects','reviews'])
def process_item(self, item, ampa):
rows = zip(item['names'],item['stars'],item['subjects'],item['reviews'])
for row in rows:
self.csvwriter.writerow(row)
return item
儲存以後直接用excel開啟是亂碼
用其他工具editplus開啟,另存為bom編碼格式
再次開啟,則檔案成功
儲存為csv格式
def init self 開啟檔案,指定方式為寫,利用第3個引數把csv寫資料時產生的空行消除 self.f open 建設工程.csv a newline 設定檔案第一行的欄位名,注意要跟spider傳過來的字典key名稱相同 self.fieldnames city postdate titl...
Python爬蟲之資料儲存為json檔案
例如爬取的資訊如下 infors 將上述資訊寫入到json檔案中,如下 import json json str json.dumps infors,ensure ascii false with open xinxi.json w encoding utf 8 as fp fp.write jso...
CSV檔案儲存為utf8編碼格式
csv格式檔案經常用來批量匯入資料到某些應用中,但是經常出現utf8亂碼問題,那麼該如何解決呢?wps找不到編碼格式設定,微軟的office軟體有,不過我使用的是libreoffice 步驟如下 1.假設我需要把user.csv儲存為utf8編碼格式 如果你使用libreoffice開啟該檔案時會提...