Scrapy Pipeline.py に関する初心者 Q
-
21-09-2019 - |
質問
私はScrapyチュートリアルを勉強しています。プロセスをテストするために、次のファイルを使用して新しいプロジェクトを作成しました。
スクリプトへのリンクについては、Scrapy グループの私の投稿を参照してください。ここに複数のリンクを投稿することはできません。
スパイダーはうまく動作し、タイトル タグ間のテキストをスクレイピングして FirmItem に配置します。
[whitecase.com] INFO: Passed FirmItem(title=[u'White & Case LLP - Lawyers - Rachel B. Wagner '])
しかし、パイプラインプロセスで立ち往生しています。この FirmItem を CSV ファイルに追加して、データベースに追加できるようにしたいと考えています。
私は Python を初めて使用するので、勉強しながら学習しています。スクレイピングされたデータが items.csv に入れられるように、pipelines.py を機能させる方法について誰かが私に手がかりを与えてくれれば幸いです。
ありがとう。
解決
彼らはあなたの特定の質問に答えていると思います スクレイピーチュートリアル.
他の人がここで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']
プロジェクトの詳細に合わせて調整してください。
他のヒント
を使用する組み込みの CSVフィードエクスポートする(利用可能 CsvItemExporter と一緒に)v0.10中A>。
はPythonが持っているモジュール読み込み用/書き込みCSVファイルを、これは、
(...とすべての引用/エスケープ権利を取得)出力を自分で書くよりも安全ですimport csv
csvfile = csv.writer(open('items.csv', 'w'))
csvfile.writerow([ firmitem.title, firmitem.url ])
csvfile.close()
ファイルを開き、書き込みます。
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