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']}
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']}