我尝试使用ajax查询超市的搜索API,并使用名称,价格和单位定价进行回复。要使用Python请求执行此操作,我将使用此代码:
import requests
import json
payload ={
'Filters':'[]',
'IsSpecial':'false',
'Location':'/shop/search/products?searchTerm=banana',
'PageNumber':'1',
'PageSize':'24',
'SearchTerm':'banana',
'SortType':'TraderRelevance'
}
url = "https://www.woolworths.com.au/apis/ui/Search/products"
data = requests.post(url, json=payload).json()
print(data['Products'][0]['Name'])
print("$", data['Products'][0]['Products'][0]['Price'], "0", sep='')
print(data['Products'][0]['Products'][0]['CupString'])
print()
print(data['Products'][1]['Name'])
print("$", data['Products'][1]['Products'][0]['Price'], "0", sep='')
print(data['Products'][1]['Products'][0]['CupString'])
print()
print(data['Products'][2]['Name'])
print("$", data['Products'][0]['Products'][2]['Price'], "0", sep='')
print(data['Products'][0]['Products'][2]['CupString'])
print()
等等......
我想要做的是将这个python代码复制到可以在Web浏览器中使用的东西。那是可能的吗?
答案 0 :(得分:0)
浏览器中的语法几乎完全相同,但当然是JavaScript,而不是Python。
您可以使用request-promise
NPM module:
const request = require('request-promise')
let url = "https://www.woolworths.com.au/apis/ui/Search/products"
let payload = {
'Filters': '[]',
'IsSpecial': 'false',
'Location': '/shop/search/products?searchTerm=banana',
'PageNumber': '1',
'PageSize': '24',
'SearchTerm': 'banana',
'SortType': 'TraderRelevance'
}
request
.post({
url,
json: payload,
headers: {'Content-Type': 'application/json'}
})
.then(res => console.log(res))
.catch(err => console.log(err))
您需要在then
方法中打印或解析数据,因为JavaScript是异步执行的,而不是像Python那样同步执行。
如何在浏览器中包含JavaScript模块的问题是另一个问题,但您可以在this site和Google上找到大量示例。
此时还有fetch
API具有良好的浏览器支持,并且不需要您引入外部模块。语法非常相似,您可以在MDN here上阅读更多内容。