Dieser Code ist ein Teil meiner Scrapy Spinne:Stopp Scrapy Spinne, wenn Datum von Seite älter ist, dass gestern
# scraping data from page has been done before this line
publish_date_datetime_object = (datetime.strptime(publish_date, '%d.%m.%Y.')).date()
yesterday = (datetime.now() - timedelta(days=1)).date()
if publish_date_datetime_object > yesterday:
continue
if publish_date_datetime_object < yesterday:
raise scrapy.exceptions.CloseSpider('---STOP---DATE IS OLDER THAN YESTERDAY')
# after this is ItemLoader and yield
Dies funktioniert gut.
Meine Frage ist Scrapy Spider am besten Ort, um diesen Code/Logik zu haben?
Ich weiß nicht, wie man es an einem anderen Ort implementieren.
Vielleicht kann es in einer Pipeline implementiert werden, aber AFAIK die Pipeline wird ausgewertet, nachdem das Kratzen getan wurde, so dass bedeutet, dass ich alle addieren muss, sogar tausend, die ich nicht brauche.
Eine Skala ist 5 addiert von gestern versus 500 addiert auf der ganzen Seite.
Ich sehe keinen Vorteil in Moving-Code zu Pipeline es bedeutet, dass Verarbeitung (Download und Scraping) 500 addiert, wenn ich nur 5 davon brauche.
Haben Sie die Daten beim Scraping nicht bereits "heruntergeladen und verarbeitet"? Aus der Sicht eines Betreuers könnte es besser sein, Bedenken zu trennen. Die Pipeline ist der Ort, an dem du unerwünschte Gegenstände fallen lässt und die Spinne erledigt einfach die Aufgabe des Sammlers. –
OK, ich verstehe Ihre Frage. Frage ist richtig. Es gibt mehrere Seiten (eine nach der anderen, wie Paginierung), jede Seite hat 25 hinzugefügte Seiten (wenn ich 500 hinzufüge, dann habe ich 20 Seiten, und ich muss nur die ersten N Seiten herunterladen, nichts danach). – WebOrCode
Das ist richtig, sollte aus dem Code wissen, sorry. Dann ist es für mich absolut sinnvoll, es in die Spinne zu lassen, es spart wirklich Ressourcen auf praktische Weise. –