Каков самый простой способ программно запустить сканер в Scrapy >= 0.14

Я хочу запустить сканер в Scrapy из модуля Python. Я хочу по существу имитировать сущность $ scrapy crawl my_crawler -a some_arg=value -L DEBUG

У меня есть следующие вещи:

  • файл settings.py для элементов проекта
  • и конвейеры
  • класс сканера, который расширяет BaseSpider и требует аргументов при инициализации.

Я вполне могу запустить свой проект с помощью команды scrapy, как указано выше, однако я пишу интеграционные тесты и хочу программно:

  • запустить сканирование, используя настройки в settings.pyи сканер с атрибутом имени my_crawler(я могу легко создать экземпляр этого класса из своего тестового модуля.
  • Я хочу, чтобы все конвейеры и промежуточное ПО использовались в соответствии со спецификацией в settings.py.
  • Я вполне доволен тем, что процесс блокируется до тех пор, пока сканер не завершит работу. Конвейеры сбрасывают вещи в БД, и это содержимое БД, которое я буду проверять после завершения сканирования, чтобы удовлетворить мои тесты.

Итак, кто-нибудь может мне помочь? Я видел несколько примеров в сети, но это либо хаки для нескольких пауков, либо обход Twistedблокирующего характера , или не работать со Scrapy 0.14 или выше. Мне просто нужно что-то очень простое. :-)

9
задан Edwardr 26 June 2012 в 18:34
поделиться