2

Scrapy チュートリアルを勉強しています。プロセスをテストするために、次のファイルを使用して新しいプロジェクトを作成しました。

スクリプトへのリンクについては、Scrapy グループの私の投稿を参照してください。ここに複数のリンクを投稿することはできません。

スパイダーはうまく動作し、タイトル タグ間のテキストをスクレイピングして FirmItem に配置します。

[whitecase.com] INFO: Passed FirmItem(title=[u'White & Case LLP - Lawyers - Rachel B. Wagner ']) 

しかし、私はパイプラインプロセスで立ち往生しています。この FirmItem を csv ファイルに追加して、データベースに追加できるようにしたいと考えています。

私はPythonを初めて使用し、学習しながら学んでいます。スクレイピングされたデータが items.csv に入れられるように、pipelines.py を機能させる方法について誰かが私に手がかりを与えてくれたら幸いです。

ありがとうございました。

4

4 に答える 4

9

Scrapy Tutorialで特定の質問に対処していると思います。

他の人がここでCSVモジュールを使用しているように、それは示唆しています。以下をpipelines.pyファイルに配置します。

import csv

class CsvWriterPipeline(object):

    def __init__(self):
        self.csvwriter = csv.writer(open('items.csv', 'wb'))

    def process_item(self, domain, item):
        self.csvwriter.writerow([item['title'][0], item['link'][0], item['desc'][0]])
        return item

次のように、settings.py の ITEM_PIPELINES 設定にパイプラインを追加して、パイプラインを有効にすることを忘れないでください。

ITEM_PIPELINES = ['dmoz.pipelines.CsvWriterPipeline']

プロジェクトの仕様に合わせて調整します。

于 2009-11-21T06:24:05.243 に答える
1

組み込みのCSV フィード エクスポート(v0.10 で利用可能) をCsvItemExporterと共に使用します。

于 2012-08-27T11:26:06.283 に答える
0

Python にはCSV ファイルの読み取り/書き込み用のモジュールがあります。これは、出力を自分で書き込むよりも安全です (そして、すべての引用/エスケープを正しく行う...)

import csv
csvfile = csv.writer(open('items.csv', 'w'))
csvfile.writerow([ firmitem.title, firmitem.url ])
csvfile.close()
于 2009-11-20T15:27:55.673 に答える
-1

ファイルを開いて書き込みます。

f = open('my.cvs','w')
f.write('h1\th2\th3\n')
f.write(my_class.v1+'\t'+my_class.v2+'\t'+my_class.v3+'\n')
f.close()

または、結果をstdoutに出力してから、stdoutをファイルにリダイレクトします./my_script.py >> res.txt

于 2009-11-20T15:25:54.267 に答える