私はこのウェブサイト全体を見て、私はgoogleで同じことをしましたが、utf-8をエンコードしたcsvファイルでデータをエクスポートすることについて何も見つかりませんでした。詐欺 - 暗号化csvファイルutf-8
フランス語の文字(Éなど)があるため、ファイルをエンコードする必要があります。 私はCsvItemExporterを使用していますが、通常はすでにutf-8でエンコードされていますが、正しい文字は表示されません。これらの文字の代わりに、私は\ A4ybzkzvのような奇妙なものしか持っていないし、正しいものを持つ方法を知らない。
私は十分にクリアされたことを願っています!私はfile = open('..\\..\\..\\..\\Fnac.csv', 'wb')
にfile = open('..\\..\\..\\..\\Fnac.csv', 'w')
を変更するとき、私は、TypeError: must be str, not bytes
と:
# -*- coding: utf-8 -*-
from scrapy import signals
from scrapy.exporters import CsvItemExporter
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
# Define your output file.
class FnacPipeline(CsvItemExporter):
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):
f = open('..\\..\\..\\..\\Fnac.csv', 'w').close()
file = open('..\\..\\..\\..\\Fnac.csv', 'w')
self.files[spider] = file
self.exporter = CsvItemExporter(file)
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
このパイプラインでは、私はエラーではなく、右の文字を持っている:ここでは
は私pipelines.pyです...あなたの助けをありがとう...
を何より、エラーではなく、右の文字を持たない出力私が持っている: France métropolitaine
私が欲しいの出力: それは書き込みをして、
fd = open(path, mode='w', encoding='utf-8')
fd.write("Unicode string")
しかし、あなたのCsvItemExporter
縫い目があなたのためにエンコードを行うには:
簡単な質問を、
pipelines.py
spider_opened
下の機能を変更しましたか? '-o'フラグをつけて' scrap crawl myspider -o results.csv'で結果をエクスポートするか、[これを行うためのいくつかの設定](https://doc.scrapy.org/en/latest/)を設定することもできますtopics/feed-exports.html)。 – Granitosaurus@Granitosaurusそれは、私はいくつかの設定やカスタマイズが彼がやっている正確なことだと言います。:) – Nabin
私は多くのプロジェクトを持ち、同じプロジェクトに時には多くのスパイダーがあるので、スパイダーでcsvファイルを作成したい...そして、実行ファイルを使ってスパイダーを自動的に実行します。だから、私はスパイダーを実行するたびにexeファイルを書き直したいとは思わない:) –