我试图在python中搜索一个价格的网站,为此我查询了一个url api端点(??)。当我使用参数复制粘贴网址时,我会在浏览器中获得完整的JSON,并在Chrome开发者控制台中完成。我的代码看起来像这样..
import requests
import json
api_woolies=('https://www.woolworths.com.au/apis/ui/Search/products?IsMultisearch=true&IsSpecial=false&PageNumber=1&PageSize=5&SearchTerm=chicken&SortType=Relevance') #the url
woolies_data=(requests.get(api_woolies))
print woolies_data.text # woolies_data.text actually contains full json what i want
woolies_data_=json.loads(woolies_data.text) # removes the part I want and leaves with jsondata i dont need
print woolies_data_
响应内容类型是json。在woolies_data.json()
等响应对象上调用json,使用json.loads(woolies_data.text)
或json.loads(woolies_data.content)
会删除前面的所有数据,并从corrections:none
开始,因为您可以在浏览器中看到它。我尝试使用json.dumps
,但在所有键和值的开头添加了反斜杠和反转逗号。我研究了这个错误,我发现如果数据已经被jsonified,就会发生这种情况。我只是想将相关数据转换为python对象,以便我可以进行一些逻辑解析,比如调用products.name/price我无法以当前格式的文本执行,因为我想从客户端带来查询参数。这是一个真正的困境,因为我可以看到数据,但没有做任何有用的事情。我也不相信字符串操作适合该过程。如果有人可以帮助我,我真的很感激。
答案 0 :(得分:2)
假设您正在尝试将API响应转换为Python dict,您需要执行以下操作:
requests.get(api_woolies)
SharedPreferences函数自动将响应的JSON内容解码为Python dict数据结构,因此您只需将其分配给变量,然后使用常规字典操作来访问您正在查找的信息。
你在使用括号时过于热心。例如,在
中api_wollies
,
周围的parens不是必需的。分配var = "value"
# instead of
var="value"
变量时也是如此。如果你不小心在parens中添加了一个逗号div {
background: #aaa;
width: 120px;
}
,你就会创建一个元组,这可能会导致不受欢迎的行为。最后,我建议在作业周围使用空格:
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"/>
<div>
<span><a href="#">Many words here in this text breakWithTheIcons</a><i class="fa fa-heart"></i><i class="fa fa-music"></i>
</span>
</div>
它提高了可读性,建议根据Python样式指南(r.json()
)。