Newbie Q über Scrapy pipeline.py
-
21-09-2019 - |
Frage
Ich studiere die Scrapy Tutorial. Um den Prozess zu testen, habe ich ein neues Projekt mit diesen Dateien:
Die Spinne läuft gut und kratzt den Text zwischen Titel-Tags und legt es in FirmItem
[whitecase.com] INFO: Passed FirmItem(title=[u'White & Case LLP - Lawyers - Rachel B. Wagner '])
Aber ich bin in dem Pipeline-Prozess stecken. Ich mag diese FirmItem in eine CSV-Datei hinzufügen, so dass ich es in die Datenbank hinzugefügt werden kann.
Ich bin neu in Python und ich lerne, wie ich mitgehen. Ich würde mich freuen, wenn mir jemand eine Ahnung hat, wie man die pipelines.py Arbeit zu machen, so dass die geschabt Daten in items.csv gesetzt wird.
Danke.
Lösung
Ich denke, sie Ihre Frage in der Scrapy Tutorial .
Es vorschlagen, wie andere hier haben die CSV-Modul. Legen Sie die folgenden in Ihrer pipelines.py
Datei.
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
Vergessen Sie nicht, um die Pipeline zu aktivieren, indem sie auf die ITEM_PIPELINES Einstellung in Ihrer settings.py hinzufügen, wie folgt aus:
ITEM_PIPELINES = ['dmoz.pipelines.CsvWriterPipeline']
Stellen Sie die Besonderheiten Ihres Projekts gerecht zu werden.
Andere Tipps
Mit dem Einbau- CSV-Feed Export (erhältlich in v0.10) zusammen mit dem CsvItemExporter .
Python hat eine Modul zum Lesen / Schreiben von CSV-Dateien , das ist sicherer als die Ausgabe Schreiben selbst (und immer alles unter Angabe / Flucht rechts ...)
import csv
csvfile = csv.writer(open('items.csv', 'w'))
csvfile.writerow([ firmitem.title, firmitem.url ])
csvfile.close()
Öffnen Sie die Datei und Schreiben zu.
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()
oder Ausgang Ihre Ergebnisse auf stdout und dann Umleitung stdout Datei ./my_script.py >> res.txt