如何从 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'])
我仍然可以提取一些产品信息,例如 displayName
和 link
,但我无法获取任何价格信息。
会发生什么?
您尝试在 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
使用以下代码,我尝试从 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'])
我仍然可以提取一些产品信息,例如 displayName
和 link
,但我无法获取任何价格信息。
会发生什么?
您尝试在 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