你能告诉它可能是什么错误吗?我正在尝试从 flipkart 中抓取物品

问题描述 投票:0回答:1
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
中抓取物品 它没有刮任何东西

python html web-scraping web scrapy
1个回答
1
投票

您的蜘蛛不做任何事情,因为您没有定义

start_requests
start_urls

来自

scrapy.Spider
的 scrapy API 文档:

这是最简单的蜘蛛,也是所有其他蜘蛛都必须继承的蜘蛛(包括与 Scrapy 捆绑在一起的蜘蛛,以及您自己编写的蜘蛛)。它不提供任何特殊功能。它只是提供了一个默认的

start_requests()
实现,它从
start_urls
蜘蛛属性发送请求,并为每个结果响应调用蜘蛛的方法解析。

解决此问题所需要做的就是将您的蜘蛛

urls
属性更改为
start_urls
。或者覆盖
start_requests
方法。

例如:

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

© www.soinside.com 2019 - 2024. All rights reserved.