Как определить, какого паука использует скорлупа? - PullRequest
3 голосов
/ 03 июля 2011

Я пытаюсь протестировать некоторые XPath-файлы с помощью оболочки Scrapy, но похоже, что мой неполный модуль-паук вызывает очистку, а это не то, чего я хочу. Есть ли способ определить, какую паутинную скрапировку использовать со своей оболочкой? Еще больше, почему Scrapy делает это; разве он не должен знать, что паук не готов к использованию? Вот почему я использую оболочку правильно? В противном случае я бы использовал

scrapy crawl spider_name

если я хочу использовать определенного паука.

Редактировать: Посмотрев на документы Spider навсегда, я нашел следующее описание экземпляра паука, используемого в оболочке.

spider - Spider, который, как известно, обрабатывает URL, или объект BaseSpider, если для текущего URL не найдено паука

Это означает, что scrapy коррелирует URL с моим пауком и использует его вместо BaseSpider. К сожалению, мой паук не готов к тестированию, поэтому есть ли способ заставить его использовать вместо оболочки BaseSpider?

Ответы [ 3 ]

4 голосов
/ 04 июля 2011

Scrapy автоматически выбирает паука на основе атрибута allowed_domains.Если для данного домена существует более одного паука, Scrapy будет использовать BaseSpider.

Но это всего лишь оболочка Python, вы можете создать экземпляр любого паука, которого захотите.

>>> from myproject.spiders.myspider import MySpider
>>> spider = MySpider()
>>> spider.parse_item(response)

Редактировать:в качестве обходного пути к не используйте своего паука, которого вы можете установить allowed_domains = []

1 голос
/ 03 июля 2011

Вы должны изменить свой файл настроек, чтобы изменить DEFAULT_ITEM_CLASS

По документам:

Класс по умолчанию, который будет использоваться для создания экземпляров предметов в Scrapy shell.

1 голос
/ 03 июля 2011

Оболочка не предназначена для использования с пауком :

Вы можете попробовать отладку код очень быстро, без необходимости запустить паук. ... [Это] используется для тестирования выражений XPath.

...