如何从 json 获取产品价格

How to get product price from json

使用以下代码,我尝试从 adidas api 中获取产品信息:

import requests

url = "https://www.adidas.com/api/plp/content-engine?"

params = {
    'sitePath': 'us',
    'query': 'women-athletic_sneakers'
}

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}

res = requests.get(url,params=params,headers=headers)
print(res)
data=res.json()
print(data)
for item in res.json()['raw']['itemList']['items']:
    print(item['displayName'],item['link'])
    

我仍然可以提取一些产品信息,例如 displayNamelink,但我无法获取任何价格信息。

会发生什么?

您尝试在 json 中查找 price,但没有可用的价格信息。

如何获取价格?

您必须用每个项目 productId 调用另一个 api:

requests.get('https://www.adidas.com/api/search/product/'+item['productId'],headers=headers)  

例子

import requests

url = "https://www.adidas.com/api/plp/content-engine?"

params = {
    'sitePath': 'us',
    'query': 'women-athletic_sneakers'
}

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}

res = requests.get(url,params=params,headers=headers)
data=res.json()

for item in res.json()['raw']['itemList']['items']:
    itemRes = requests.get('https://www.adidas.com/api/search/product/'+item['productId'],headers=headers)    
    print(item['displayName'],item['link'],itemRes.json()['price'])

输出

Ultraboost OG Shoes /us/ultraboost-og-shoes/GX5370.html 200 
Super Super Sleek 72 Shoes /us/super-super-sleek-72-shoes/GX2769.html 140 
Forum Mid Shoes /us/forum-mid-shoes/GW2857.html 150 
Forum Mid Shoes /us/forum-mid-shoes/GW2858.html 150 
Ultraboost 21 Shoes /us/ultraboost-21-shoes/FY0403.html 180 
Ultraboost 21 Shoes /us/ultraboost-21-shoes/FY0432.html 180 
Ultraboost 21 Shoes /us/ultraboost-21-shoes/FZ2762.html 180 
Ultraboost 21 Shoes /us/ultraboost-21-shoes/FY0402.html 180