Response.css returns 使用 Scrapy 库通过 API 获取数据时的空列表

Response.css returns empty list while fetching data through API using Scrapy Library

scrapy shell 'https://www.samsung.com/in/smartphones/galaxy-m/'  

fetch('https://searchapi.samsung.com/v6/front/b2c/product/finder/gpv2?type=01010000&siteCode=in&start=1&num=12&sort=onlineavailability&onlyFilterInfoYN=N&keySummaryYN=Y&filter2=03i04')

response.css('product-card-v2__item')

描述:我正在尝试获取URL中提到的产品的名称、价格。 但每次它 returns 空列表。

该站点的内容是动态的,因此您无法使用 xhr 访问它们。但是,有一个 api 可用,其中包含您想要的相同内容。以下是如何从着陆页抓取产品名称及其所属类别。欢迎添加其他相关字段。

import scrapy

class m52(scrapy.Spider):
    name = 'm52Mobi'
    start_urls = ['https://searchapi.samsung.com/v6/front/b2c/product/finder/gpv2?type=01010000&siteCode=in&start=1&num=12&sort=onlineavailability&onlyFilterInfoYN=N&keySummaryYN=Y&filter2=03i04']

    def parse(self, response):
        for item in response.json()['data']['components']:
            if not item['name']=='PRODUCT_CAROUSEL':continue
            for container in item['parameters']:
                cat_name = container['title']
                for product in container['products']:
                    yield {"category":cat_name,"product name":product['name']}