第二个Scrapy.request无法正确解析页面

时间:2018-07-31 22:59:26

标签: python web-scraping xml-parsing scrapy

我正在尝试抓取Amazon search page的产品名称和价格。然后,我刮取第二页结果并在此处停止。但是,当scrapy.Requestthe second page of results上调用解析时,我的解析函数不再起作用。这是我的解析函数

def parse(self, response):
    print("inside parse")

    for product in response.xpath('//li[starts-with(@id,"result_") and not(contains(@class,"AdHolder"))]'):

        print("in PRODUCT")

        product_name = product.xpath('.//div[@class="a-row a-spacing-small"]//div[starts-with(@class,"a-row a-spacing-none")]/a/h2/text()').extract_first()
        brand_name = product.xpath('.//div[@class="a-row a-spacing-small"]//div[@class="a-row a-spacing-none"]/span[2]/text()').extract_first()

        if fuzz.partial_ratio(target_name, product_name) > self.max_score:
            self.max_score = fuzz.partial_ratio(target_name, product_name)

            self.product_page = product.xpath('.//div[@class="a-row a-spacing-small"]//div[@class="a-row a-spacing-none"]/a/@href').extract_first()


    nextpage = response.xpath('//div[@id="pagn"]/span[@class="pagnLink"]/a[contains(text(),"2")]/@href').extract_first()
    if nextpage is not None:
        nextpage = response.urljoin(nextpage)
        yield scrapy.Request(nextpage, callback=self.parse, headers = {"User-Agent":"Mozilla/5.0"})

在第二个Scrapy请求中,它永远不会进入for循环(因此“ in PRODUCT”中的内容永远不会被打印)。但是,解析功能适用于结果的第一页,并且由于搜索结果页面共享相同的HTML结构,所以我不知道为什么解析功能在第二页上失败

0 个答案:

没有答案