使用 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]+)")