Comando de administración personalizado de Django que ejecuta Scrapy: ¿Cómo incluir las opciones de Scrapy?

Quiero ser capaz de ejecutar elScrapy web crawling framework desde dentro de Django. Scrapy en sí solo proporciona una herramienta de línea de comandosscrapy para ejecutar sus comandos, es decir, la herramienta no fue escrita intencionalmente para ser llamada desde un programa externo.

El usuarioMikhail Korobov se le ocurrió unabuena solución, es decir, llamar a Scrapy desde un comando de administración personalizado de Django. Por conveniencia, repito su solución aquí:

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

En lugar de llamar por ejemploscrapy crawl domain.com Ahora puedo hacerpython manage.py scrapy crawl domain.com desde dentro de un proyecto de Django. Sin embargo, las opciones de un comando de Scrapy no se analizan en absoluto. Si lo hagopython manage.py scrapy crawl domain.com -o scraped_data.json -t json, Solo obtengo la siguiente respuesta:

<code>Usage: manage.py scrapy [options] 

manage.py: error: no such option: -o
</code>

Entonces, mi pregunta es, ¿cómo extender el comando de administración personalizado para adoptar las opciones de línea de comandos de Scrapy?

Desafortunadamente, Django'sdocumentación de esta parte No es muy extenso. También he leído la documentación de Python.módulo optparse Pero después no me quedó más claro. ¿Alguien puede ayudarme en este sentido? ¡Muchas gracias por adelantado!

Respuestas a la pregunta(2)

Su respuesta a la pregunta