scrapy爬蟲儲存為csv檔案的技術分析

2021-07-24 15:25:25 字數 1859 閱讀 3836

由於工作需要,將爬蟲的檔案要儲存為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開啟該檔案時會提...