在使用Scrapy库通过API获取数据时,Response.css返回空列表

insrf1ej  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(157)
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')

说明:我试图获取的名称,价格的产品中提到的网址。但每次它返回空列表。

zfycwa2u

zfycwa2u1#

这个网站的内容是动态的,所以你不能用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']}

相关问题