Я пытаюсь передать определенный пользователем аргумент пауку scrapy. Может ли кто-нибудь подсказать, как это сделать?
Я -a
где-то читал о параметре, но понятия не имею, как его использовать.
python
scrapy
web-crawler
Л. Лоулит
источник
источник
self.domain
, я все равно не смогу получить к нему доступ вне__init__
метода. Python выдает неопределенную ошибку. Кстати, почему вы пропустилиsuper
звонок? PS. Я работаю с классом CrawlSpider__init__
- это метод класса паука. Его реализация сама по себе не делает паука менее надежным, и он включен в ответ, чтобы показать, что вы можете объявить значения по умолчанию для аргументов ключевого слова, но, как вы сказали, это необязательно. Как мы указывали в прошлом году, вам не нужно использовать,getattr
вы можете просто получить доступ к аргументам как к атрибутам, например,self.category
или как мы видим в ответеself.domain
Предыдущие ответы были правильными, но вам не нужно объявлять конструктор (
__init__
) каждый раз, когда вы хотите закодировать паук scrapy, вы можете просто указать параметры, как и раньше:и в вашем коде паука вы можете просто использовать их как аргументы паука:
И это просто работает.
источник
Передача аргументов с помощью команды сканирования
Чтобы передать аргументы для запуска на scrapyd, замените -a на -d
Паук получит аргументы в своем конструкторе.
Scrapy помещает все аргументы как атрибуты паука, и вы можете полностью пропустить метод init . Остерегайтесь использовать метод getattr для получения этих атрибутов, чтобы ваш код не сломался.
источник
Аргументы паука передаются при выполнении команды обхода с помощью параметра -a. Например, если я хочу передать имя домена в качестве аргумента своему пауку, я сделаю следующее:
И получить аргументы в конструкторах паука:
...
это сработает :)
источник
В качестве альтернативы мы можем использовать ScrapyD, который предоставляет API, в котором мы можем передать start_url и имя паука. ScrapyD имеет API для остановки / запуска / статуса / вывода списка пауков.
scrapyd-deploy
развернет паука в форме яйца в демона, и даже он поддерживает версию паука. При запуске паука вы можете указать, какую версию паука использовать.curl http://localhost:6800/schedule.json -d project=default -d spider=testspider -d start_urls="https://www.anyurl...|https://www.anyurl2"
Дополнительным преимуществом является то, что вы можете создать свой собственный пользовательский интерфейс, чтобы принимать URL-адрес и другие параметры от пользователя и планировать задачу с помощью вышеуказанного API расписания scrapyd.
Обратитесь к документации scrapyd API для более подробной информации.
источник