ich einen Arbeits Crawler mit scrapy geschrieben haben,
jetzt habe ich es durch eine Django Webapp steuern möchten, das heißt:Wie Setup und starten Sie programmatisch eine Scrapy Spinne (URLs und Einstellungen)
- Set 1 oder mehrere
start_urls
- Set 1 oder mehrere
allowed_domains
- Set
settings
Werte - Starten Sie die Spinne
- Stopp/Pause/Fortsetzen einer Spinne
- rufen Sie einige Statistiken während des Laufens
- retrive einige Statistiken nach Spider abgeschlossen ist.
Zuerst dachte ich scrapyd dafür gemacht wurde, aber nach dem Doc lesen, scheint es, dass es mehr ein Dämon der Lage ‚verpackt Spinnen‘, auch bekannt als ‚scrapy Eier‘ zu verwalten; und dass alle Einstellungen (start_urls
, allowed_domains
, settings
) immer noch in dem "Scrapy Ei" selbst fest programmiert sein müssen; Es sieht also nicht nach einer Lösung für meine Frage aus, es sei denn, ich habe etwas übersehen.
Ich schaute auch auf diese Frage: How to give URL to scrapy for crawling?; Aber die beste Antwort, um mehrere URLs zur Verfügung zu stellen, wird vom Autor himeslf als 'hässlicher Hack' eingestuft, der einen Python-Subprozess und eine komplexe Shell-Behandlung beinhaltet, daher glaube ich nicht, dass die Lösung hier zu finden ist. Es funktioniert möglicherweise auch für start_urls
, aber es scheint nicht zu ermöglichen, allowed_domains
oder settings
.
Dann warf ich einen Blick auf scrapy webservices: Es scheint die gute Lösung für das Abrufen von Statistiken zu sein. Allerdings ist es immer noch eine Laufspinne erfordert, und keine Ahnung zu ändern settings
Es gibt eine Reihe von Fragen zu diesem Thema sind, keiner von ihnen scheint zufrieden stellend:
- using-one-scrapy-spider-for-several-websites Dies scheint veraltet, wie scrapy hat entwickelte sich seit 0.7
- creating-a-generic-scrapy-spider Keine akzeptierte Antwort, immer noch reden um Shell-Parameter optimieren.
Ich weiß, dass Scrapy in Produktionsumgebungen verwendet wird; und ein Tool wie scrapyd zeigt, dass es definitiv einige Möglichkeiten gibt, diese Anforderungen zu bewältigen (ich kann mir nicht vorstellen, dass die scrapy Eier, mit denen scrapyd zu tun hat, mit der Hand erzeugt werden!)
Vielen Dank für Ihre Hilfe.
Scrapy Eier werden mit dem 'deploy' Befehl erstellt; Vielleicht können Sie den [Django Dynamic Scraper] (https://github.com/holgerd77/django-dynamic-scraper) für Hinweise zur Integration der Scrapy Spider Steuerung in Django besuchen. –
Haben Sie sich das [scrapy tool] (http://doc.scrapy.org/en/latest/topics/commands.html) oder das [slybot project] (https://github.com/scrapy/slybot) angesehen Inspiration? – jah
Meine Antwort http://stackoverflow.com/questions/9814827/creating-a-generic-scrapy-spider/13054768#13054768 kann helfen – djinn