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
中抓取物品
它没有刮任何东西
您的蜘蛛不做任何事情,因为您没有定义
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