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 jsonIch 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!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage