У меня есть ситуация, когда у меня есть CrawlSpider, который выполняет поиск результатов с использованием почтовых индексов и категорий (POST-данных). Мне нужно получить все результаты для всех категорий во всех почтовых кодах. Мой паук принимает почтовый индекс и категорию в качестве аргументов для данных POST. Я хочу программно запустить паук для каждого почтового кода/категории с помощью скрипта.Запуск нескольких пауков в одном процессе, один паук за раз
В документации объясняется, что вы можете запускать несколько пауков для каждого процесса с помощью этого примера кода здесь: http://doc.scrapy.org/en/latest/topics/practices.html#running-multiple-spiders-in-the-same-process Это то же самое, что я хочу сделать, однако я хочу, чтобы по существу очереди на пауков, чтобы запускать один за другим после предыдущего паука отделки.
Любые идеи о том, как это сделать? Кажется, что есть некоторые ответы, которые относятся к более старым версиям scrapy (~ 0.13), но архитектура изменилась, и они перестали функционировать с последней стабильностью (0.24.4)
Отличный пример. После завершения первого паука и завершения обратного вызова при выполнении 'crawler.crawl (spider)' я получаю следующие следующие AssertionError: 'exceptions.AssertionError: Паук уже прикреплен. Не уверен, как справиться с этим – aaearon
@aaearon спасибо за попробуйте! Я обновил код, добавляя строку для отсоединения паука от искателя, должен помочь. Хотя, это начинает быть чем-то вроде магии :) – alecxe
Я нашел для того, чтобы это работало, как предполагалось, мне пришлось переместить инициализацию установки и искателя вместе с 'crawler.start()' внутри функции 'configure_crawler', иначе второй искатель начнет, но оставит место, где первый искатель не использовал новые данные, и будет зацикливаться на последнем URL-адресе. – aaearon