Завершение scrap runspider до полного выполнения - PullRequest
0 голосов
/ 19 апреля 2019
class PythonEventsSpider(scrapy.Spider):
    name = 'goodspider'
    start_urls=['https://www.amazon.com/s?me=A33IZBYF4IBZTP&marketplaceID=ATVPDKIKX0DER']
    details=[]

    def parse(self, response):
        base_url="https://www.amazon.com"
        #code here
        next_page=base_url+response.xpath('//li[@class="a-last"]/a/@href').extract_first()
        print(next_page)
        if "page=3" not in next_page:
            yield scrapy.Request(url=next_page,callback=self.parse)
        else:
            #raise CloseSpider('bandwidth_exceeded')
            #exit("Done")

Здравствуйте, я хотел бы остановить программу, когда она достигнет страницы 3, URL будет следующим: https://www.amazon.com/s?i=merchant-items&me=A33IZBYF4IBZTP&page=3&marketplaceID=ATVPDKIKX0DER&qid=1555628764&ref=sr_pg_3 Я попробовал некоторые ответы онлайн, но это не сработало, программа продолжала работать. я хочу добавить строку или функцию в операторе else до конца scrapy runspider test.py -o test.csv

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Если вы действительно хотите, чтобы ваш сценарий полностью остановился на этом этапе, вы можете прекратить выполнение этого сценария так же, как и для любого другого сценария Python: использовать sys.exit().

Однако,это означает, что обработка предметов и другие части внутренних рабочих элементов Scrapy не смогут запускаться.Если это проблема для вас, нет другого пути, кроме ответа Умайра.

0 голосов
/ 19 апреля 2019

CloseSpider будет обрабатывать все ожидающие запросы тоже

Так что вы должны установить CONCURRENT_REQUESTS=1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...