我已经在python中编写了一个脚本,以便从网页上获取json响应中的不同项目。通过收集不同物品的名称,我获得了部分成功。但是,我希望得到不同的价格。在解析每个项目的相应值时,我被卡住了。对此的任何帮助将受到高度赞赏。
网站地址:web_link
脚本我尝试过:
import requests
res = requests.get("replace_with_above_url")
for items in res.json():
for name in items:
print(name)
这就是结构的样子:
[{"BTC":{"sellPrice":711500,"buyPrice":711150,"lastTradePrice":711150}},{"XRP":{"sellPrice":76.7,"buyPrice":76.6,"lastTradePrice":76.6}},{"NEO":{"sellPrice":8769,"buyPrice":8651,"lastTradePrice":8769}},{"GAS":{"sellPrice":3140,"buyPrice":3105,"lastTradePrice":3105}},{"ETH":{"sellPrice":63500,"buyPrice":62450.01,"lastTradePrice":63500}},{"XLM":{"sellPrice":30.78,"buyPrice":30.61,"lastTradePrice":30.78}}]
输出I(仅):
BTC
XRP
NEO
输出我打算得到:
BTC 711500 711150 711150
XRP 76.7 76.6 76.6
so on ---
答案 0 :(得分:1)
使用此:
r = requests.get('https://bitbns.com/order/getTickerAll')
for item in r.json():
for key, value in item.items():
print(key, value['sellPrice'], value['buyPrice'], value['lastTradePrice'])
输出:
BTC 705000 704000 704000
XRP 72.3 72.29 72.29
NEO 8452 8450 8452
GAS 3060 3024 3024
ETH 61000 60700 60700
XLM 29.8 29.78 29.78
循环遍历词典时,可以使用
items()
方法同时检索键和相应的值。
答案 1 :(得分:1)
我觉得问题是你需要了解你正试图在第二个循环中打印。如果在第一次迭代中打印,则可以看到以下结果。
import requests
res = requests.get("https://bitbns.com/order/getTickerAll")
for items in res.json():
print(items)
{'BTC': {'sellPrice': 703500, 'buyPrice': 702000, 'lastTradePrice': 702000}}
{'XRP': {'sellPrice': 72.89, 'buyPrice': 72.7, 'lastTradePrice': 72.9}}
{'NEO': {'sellPrice': 8480, 'buyPrice': 8400, 'lastTradePrice': 8400}}
{'GAS': {'sellPrice': 3000, 'buyPrice': 2990, 'lastTradePrice': 2990}}
{'ETH': {'sellPrice': 61499, 'buyPrice': 60800, 'lastTradePrice': 60800}}
{'XLM': {'sellPrice': 29.6, 'buyPrice': 29.53, 'lastTradePrice': 29.53}}
现在您需要遍历第二个对象,因此您可以使用以下代码。
import requests
res = requests.get("https://bitbns.com/order/getTickerAll")
for item in res.json():
for key,value in item.items():
print(key, value)
for subkey,subvalue in value.items():
print(subkey,subvalue)
第二个和第三个for循环即将到来,因为Python假定字典按定义具有任意数量的键。您可以根据需要继续向下钻取,也可以按照上一个答案获得所需的确切结果。