html 尝试使用Python从Flipkart中抓取项目时出错

kqhtkvqz  于 2023-05-12  发布在  Python
关注(0)|答案(1)|浏览(101)

你能告诉我里面可能有什么错误吗?我正在尝试从Flipkart中抓取物品

import scrapy

class flipkart_scrapy(scrapy.Spider):
    name = 'flipkart'
    urls = ['https://www.flipkart.com/televisions/pr?sid=ckf%2Cczl&p%5B%5D=facets.brand%255B%255D%3DMi&otracker=categorytree&p%5B%5D=facets.serviceability%5B%5D%3Dtrue&p%5B%5D=facets.availability%255B%255D%3DExclude%2BOut%2Bof%2BStock&otracker=nmenu_sub_TVs%20%26%20Appliances_0_Mi']
    base_url = urls[0]
    page_no = 2
    next_page = base_url + '&page=' + str(page_no)

    def parse(self, response):
        for product in response.css("div._2kHMtA"):
            yield {
                'name': product.css("div._4rR01T::text").get(),
                'price': product.css('div._30jeq3._1_WHN1::text').get(),
                'rating': product.css("div._3LWZlK::text").get(),
            }

        if self.next_page is not None:
            yield response.follow(self.next_page, callback=self.parse)
            self.page_no += 1
            self.next_page = self.base_url + '&page=' + str(self.page_no)

这是我正在运行的代码:scrapy crawl flipkart
你能告诉我里面可能有什么错误吗?我正在尝试从flipkart中抓取项目,但没有抓取任何内容

qojgxg4l

qojgxg4l1#

您的spider不会做任何事情,因为您没有定义start_requestsstart_urls
来自scrapy.Spider的scrapy API文档:
这是最简单的spider,也是所有其他spider都必须继承的spider(包括Scrapy附带的spider,以及您自己编写的spider)。它不提供任何特殊功能。它只是提供了一个默认的start_requests()实现,它从start_urls spider属性发送请求,并为每个结果响应调用spider的方法parse。
要解决这个问题,您需要做的就是将spider的urls属性更改为start_urls。或者重写start_requests方法。
例如:

class flipkart_scrapy(scrapy.Spider):
    name = 'flipkart'
    start_urls = [...]  #   <---- This changes to start_urls

相关问题