2013-03-29 3 views
6

Soweit ich in der Dokumentation und verschiedenen Diskussionen im Internet herausfinden konnte, wurde die Möglichkeit, Feldern in einem Scrapy-Element Standardwerte hinzuzufügen, entfernt.Scrapy: Standardwerte für Artikel und Felder. Was ist die beste Implementierung?

dies nicht funktioniert

category = Field(default='null') 

so meine Frage: Was ist ein guter Weg Felder mit einem Standardwert init?

Ich habe bereits versucht, es als eine Artikelpipeline zu implementieren, wie hier vorgeschlagen. ohne Erfolg. https://groups.google.com/forum/?fromgroups=#!topic/scrapy-users/-v1p5W41VDQ

+0

Warum kein Glück? Was ist passiert? –

+1

es funktioniert einfach nicht. Ich habe eine Artikelpipeline implementiert und sie zu ITEM_PIPELINES in meiner setting.py hinzugefügt. Danach habe ich erwartet, dass bestimmte Felder mit Standarddaten gefüllt werden, falls sie nicht von scrapy gefüllt werden könnten ... leider bleiben die Felder leer – Jabb

+0

Sind Sie sicher, dass das 'process_item' Ihrer Pipeline läuft? Fügen Sie hier Ihren Pipeline-Code ein, damit wir ihn sehen können. –

Antwort

3

herausgefunden, was das Problem war. Die Pipeline funktioniert (Code folgt für die Referenz anderer Leute). Mein Problem war, dass ich Werte an ein Feld anhänge. und ich wollte, dass die Standardmethode an einem dieser Listenwerte arbeitet ... wähle einen anderen Weg und es funktioniert. Ich implementiere es jetzt mit einer benutzerdefinierten setDefault-Prozessor-Methode.

class DefaultItemPipeline(object): 

def process_item(self, item, spider): 
    item.setdefault('amz_VendorsShippingDurationFrom', 'default') 
    item.setdefault('amz_VendorsShippingDurationTo', 'default') 
    # ... 
    return item