Пользовательская команда управления Django под управлением Scrapy: как включить опции Scrapy?
Я хочу быть в состоянии запуститьScrapy Web Framework изнутри Джанго. Сама Scrapy предоставляет только инструмент командной строкиscrapy
для выполнения своих команд, то есть инструмент не был специально написан для вызова из внешней программы.
ПользовательМихаил Коробов придумалихорошее решениеа именно для вызова Scrapy из пользовательской команды управления Django. Для удобства повторю его решение здесь:
<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>
Вместо того, чтобы звонить, например,scrapy crawl domain.com
Теперь я могу сделатьpython manage.py scrapy crawl domain.com
из проекта Django. Однако параметры команды Scrapy вообще не анализируются. Если я сделаюpython manage.py scrapy crawl domain.com -o scraped_data.json -t json
Я только получаю следующий ответ:
<code>Usage: manage.py scrapy [options] manage.py: error: no such option: -o </code>
So my question is, how to extend the custom management command to adopt Scrapy's command line options?
К сожалению, Djangoдокументация этой части не очень обширный. Я также прочитал документацию Pythonмодуль optparse но потом мне стало не понятнее. Может ли кто-нибудь помочь мне в этом отношении? Заранее большое спасибо!