在完全执行完成之前结束scrapy runpider

时间:2019-04-18 23:55:24

标签: python scrapy

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页时停止该程序,网址如下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 :(得分:0)

CloseSpider也将处理所有待处理的请求

因此您必须设置CONCURRENT_REQUESTS=1

答案 1 :(得分:0)

如果您确实希望脚本在那时完全停止,则可以终止脚本,就像对其他任何Python脚本一样:use sys.exit()

但是,这意味着Scrapy的项目处理和内部工作的其他部分将没有运行的机会。如果这对您来说是个问题,那么除了Umair的回应之外,别无他法。