Polecenie zarządzania niestandardowego Django z uruchomieniem Scrapy: Jak włączyć opcje Scrapy?
Chcę móc uruchomićScrapy indeksowania stron internetowych z Django. Samo zadrapanie zapewnia tylko narzędzie linii poleceńscrapy
aby wykonać swoje polecenia, tzn. narzędzie nie zostało celowo napisane do wywołania z zewnętrznego programu.
UżytkownikMikhail Korobov wymyśliłładne rozwiązanie, mianowicie wywołać Scrapy z polecenia zarządzania niestandardowego Django. Dla wygody powtarzam tutaj jego rozwiązanie:
<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>
Zamiast dzwonić np.scrapy crawl domain.com
Teraz mogę to zrobićpython manage.py scrapy crawl domain.com
z poziomu projektu Django. Jednak opcje polecenia Scrapy nie są w ogóle analizowane. Jeśli zrobiępython manage.py scrapy crawl domain.com -o scraped_data.json -t json
, Otrzymuję tylko następującą odpowiedź:
<code>Usage: manage.py scrapy [options] manage.py: error: no such option: -o </code>
Moje pytanie brzmi: jak rozszerzyć polecenie zarządzania niestandardowego, aby przyjąć opcje linii poleceń Scrapy?
Niestety, Djangodokumentacja tej części nie jest zbyt obszerny. Przeczytałem także dokumentację Pythonamoduł optparse ale potem nie było dla mnie jaśniejsze. Czy ktoś może mi w tym pomóc? Z góry dziękuję!