今天早些时候,我确实提出了一个问题,但几个小时前,我意识到有一个新的API,我试图做什么。现在的问题是,我需要把每一个产品的名称,卖价和买价,以及一些更多的东西放到我的网站里。到目前为止,我已经做到了这一步。
import requests
from flask import Flask, render_template
full_list = list()
app = Flask(__name__)
f = requests.get(
"https://api.hypixel.net/skyblock/bazaar?key=[key is supposed to be secret]").json()
for x in product:
buyPrice = f["products"][x]["buy_summary"][0]["pricePerUnit"]
@app.route('/')
def price():
return render_template("index.html", product=product, buyprice=buyPrice)
if __name__ == "__main__":
app.run(debug=True)
产品的API是这样的,我不能把它全部贴出来 因为它非常大。
{
"products": {
"product_id": "BROWN_MUSHROOM",
"sell_summary": [
"amount": 3865,
"pricerPerUnit": 14.8,
"orders": 2
],
"buy_summary": [
"amount": 704,
"pricerPerUnit": 15.8,
"orders": 1
],
"quick_status": {
"productId": "BROWN_MUSHROOM",
"sellPrice": 14.527416975007378,
"sellVolume": 915286,
"sellMovingWeek": 23745501,
"sellOrders": 40,
"buyPrice": 15.898423574723452,
"buyVolume": 673646,
"buyMovingWeek": 8011243,
"buyOrders": 54
}
}
现在我想要的是 "product_id",它可以从一开始就被抓取 或者从 "quick_status "中抓取,我还想要从buysell_summary中获取pricePerUnit, Amount和Orders。
我怎么做呢?我试着将所有的值存储在一个单独的名为 "price "的数组中,我使用 "price.append(buyPrice) "来添加,但它只添加了一个产品的价格,我希望有每一个产品的价格。
最后应该是这样的。
当然,我不需要所有的代码,只是需要一点帮助,告诉我如何从API中提取这些值,并把它放到我的HTML代码中。
目前我的HTML看起来是这样的。
{% for item in product %}
<h1>{{ item }}</h1>
{% endfor %}
我是新的flask,这是我的第一个项目:)
看起来这些信息应该显示在一个表格中。 你也可以使用javascript库中的datatables来快速添加分页和排序等功能到表中。
我已经回答了两个问题,你可能希望阅读,第一个是关于 如何处理这样的数据 和另一个关于 将硬编码的表头排除在模板之外。.
我想出了回波 搜索-通用表 (在第一个答案中链接),它实现了这个功能。 它也与你的数据兼容,对你的API的JSON响应进行一些最小的处理。
对于你的数据来说,看起来你想显示的所有内容都在 quick_status
每个产品的对象。
所以考虑到您有 f
:JSON格式,由于有了JSON格式的帮助,它被转换为字典。requests
你可以做这样的事情。
original_items = [] # Create an empty list
for _, data in f['products'].items():
original_items.append(data['quick_status'])
out
现在是一个列表,其中每个项目是... quick_status
JSON对象作为一个python字典。
>>> print(out[0]) # To obtain the first dictionary:
{'buyMovingWeek': 8018735,
'buyOrders': 70,
'buyPrice': 15.848714783373357,
'buyVolume': 624894,
'productId': 'BROWN_MUSHROOM',
'sellMovingWeek': 23716981,
'sellOrders': 22,
'sellPrice': 12.7,
'sellVolume': 396395}
当然,更快捷的方法是使用 名单理解 这是有据可查的,所以值得一读。
original_items = [data['quick_status'] for _, data in f['products'].items()]
这现在可以用在 链接码 最终在前台完成以下操作。