使用 XML spreadSheet 获取商品的价格
Using XML spreadSheet to get the price of an item
我想获得一个在 steam 上有市场的物品的价格。我尝试使用此公式,但它不起作用,它告诉我该值太大。我不知道该怎么办。我想知道 steam 上某件商品的价格。
Blockquote =VALUE(REGEXEXTRACT(REGEXEXTRACT(CONCATENATE(IMPORTXML("https://steamcommunity.com/market/listings/730/Clutch%20Case", "//script[2]")),".*]]"), "[0-9]+.[0-9]+"))
这里的主要问题是 Steam 页面中的价格是由 Javascript 生成的,而 IMPORTXML
无法检索动态生成的数据。看起来你试图通过导入 <script>
部分来解决这个问题,但这不会执行脚本,你只是在获取一堆代码。
根据 this answer,Steam 有一些端点可用于获取市场数据。这些 return 带有项目信息的简单 JSON 字符串。端点如下所示:
http://steamcommunity.com/market/priceoverview/?currency=1&appid=[ID]&market_hash_name=[Item name]
appid
是游戏的ID,market_hash_name
是物品的URL-encoded名称。方便的是,您已经可以在您已经在使用的 URL https://steamcommunity.com/market/listings/730/Clutch%20Case
中找到它们。游戏ID为730
,名称为Clutch%20Case
。所以你可以将它们插入端点以获得这个 URL:
http://steamcommunity.com/market/priceoverview/?currency=1&appid=730&market_hash_name=Clutch%20Case
端点的 JSON 如下所示:
{
"success":true,
"lowest_price":"[=10=].30",
"volume":"94,440",
"median_price":"[=10=].31"
}
由于您只关心中位数价格,我们可以使用带有 REGEXEXTRACT
的公式来仅提取那部分:
这是在 A1 中粘贴 URL 的示例。
=REGEXEXTRACT(JOIN("", IMPORTDATA(A1)), "median_price:""($[0-9]+.[0-9]+)")
编辑: 如我链接的答案中所述,您可以用不同的数字测试 URL 中的 currency
参数以获得其他货币。在您的情况下,您可以尝试 currency=2
英镑 (£)。您还必须编辑 REGEXEXTRACT
以说明此更改:
URL: http://steamcommunity.com/market/priceoverview/?currency=2&appid=730&market_hash_name=Clutch%20Case
公式:=REGEXEXTRACT(JOIN("", IMPORTDATA(A1)), "median_price:""(£[0-9]+.[0-9]+)")
我想获得一个在 steam 上有市场的物品的价格。我尝试使用此公式,但它不起作用,它告诉我该值太大。我不知道该怎么办。我想知道 steam 上某件商品的价格。
Blockquote =VALUE(REGEXEXTRACT(REGEXEXTRACT(CONCATENATE(IMPORTXML("https://steamcommunity.com/market/listings/730/Clutch%20Case", "//script[2]")),".*]]"), "[0-9]+.[0-9]+"))
这里的主要问题是 Steam 页面中的价格是由 Javascript 生成的,而 IMPORTXML
无法检索动态生成的数据。看起来你试图通过导入 <script>
部分来解决这个问题,但这不会执行脚本,你只是在获取一堆代码。
根据 this answer,Steam 有一些端点可用于获取市场数据。这些 return 带有项目信息的简单 JSON 字符串。端点如下所示:
http://steamcommunity.com/market/priceoverview/?currency=1&appid=[ID]&market_hash_name=[Item name]
appid
是游戏的ID,market_hash_name
是物品的URL-encoded名称。方便的是,您已经可以在您已经在使用的 URL https://steamcommunity.com/market/listings/730/Clutch%20Case
中找到它们。游戏ID为730
,名称为Clutch%20Case
。所以你可以将它们插入端点以获得这个 URL:
http://steamcommunity.com/market/priceoverview/?currency=1&appid=730&market_hash_name=Clutch%20Case
端点的 JSON 如下所示:
{
"success":true,
"lowest_price":"[=10=].30",
"volume":"94,440",
"median_price":"[=10=].31"
}
由于您只关心中位数价格,我们可以使用带有 REGEXEXTRACT
的公式来仅提取那部分:
这是在 A1 中粘贴 URL 的示例。
=REGEXEXTRACT(JOIN("", IMPORTDATA(A1)), "median_price:""($[0-9]+.[0-9]+)")
编辑: 如我链接的答案中所述,您可以用不同的数字测试 URL 中的 currency
参数以获得其他货币。在您的情况下,您可以尝试 currency=2
英镑 (£)。您还必须编辑 REGEXEXTRACT
以说明此更改:
URL: http://steamcommunity.com/market/priceoverview/?currency=2&appid=730&market_hash_name=Clutch%20Case
公式:=REGEXEXTRACT(JOIN("", IMPORTDATA(A1)), "median_price:""(£[0-9]+.[0-9]+)")