Django-Befehl zur benutzerdefinierten Verwaltung, mit dem Scrapy ausgeführt wird: Wie werden die Optionen von Scrapy einbezogen?
Ich möchte das laufen könnenScrapy-Web-Crawling-Framework aus Django heraus. Scrapy selbst bietet nur ein Befehlszeilentoolscrapy
das Tool wurde nicht absichtlich geschrieben, um von einem externen Programm aufgerufen zu werden.
Der BenutzerMikhail Korobov kam mit einemschöne lösung, um Scrapy von einem Django-Befehl zur benutzerdefinierten Verwaltung aus aufzurufen. Der Einfachheit halber wiederhole ich seine Lösung hier:
<code># -*- coding: utf-8 -*- # myapp/management/commands/scrapy.py from __future__ import absolute_import from django.core.management.base import BaseCommand class Command(BaseCommand): def run_from_argv(self, argv): self._argv = argv return super(Command, self).run_from_argv(argv) def handle(self, *args, **options): from scrapy.cmdline import execute execute(self._argv[1:]) </code>
Anstatt z.B.scrapy crawl domain.com
Ich kann es jetzt tunpython manage.py scrapy crawl domain.com
aus einem Django-Projekt heraus. Die Optionen eines Scrapy-Befehls werden jedoch überhaupt nicht analysiert. Wenn ich machepython manage.py scrapy crawl domain.com -o scraped_data.json -t json
Ich erhalte nur die folgende Antwort:
<code>Usage: manage.py scrapy [options] manage.py: error: no such option: -o </code>
Meine Frage ist also, wie man den benutzerdefinierten Verwaltungsbefehl erweitert, um die Befehlszeilenoptionen von Scrapy zu übernehmen.
Leider ist DjangoDokumentation dieses Teils ist nicht sehr umfangreich. Ich habe auch die Dokumentation von Python gelesenoptparse Modul aber später war es mir nicht klarer. Kann mir da jemand weiterhelfen? Vielen Dank im Voraus!