【问题标题】:Using XML spreadSheet to get the price of an item使用 XML spreadSheet 获取商品的价格
【发布时间】:2023-01-04 12:15:36
【问题描述】:

我想获得 Steam 市场上某件商品的价格。我尝试使用此公式,但它不起作用,它告诉我该值太大。我不知道该怎么办。我想获得在 Steam 上销售的商品的价格。

Blockquote =VALUE(REGEXEXTRACT(REGEXEXTRACT(CONCATENATE(IMPORTXML("https://steamcommunity.com/market/listings/730/Clutch%20Case", "//script[2]")),".*]]") , "[0-9]+.[0-9]+"))

【问题讨论】:

    标签: google-sheets web-scraping google-sheets-formula steam


    【解决方案1】:

    这里的主要问题是 Steam 页面中的价格是由 Javascript 生成的,IMPORTXML 无法检索动态生成的数据。似乎您正试图通过导入 <script> 部分来解决这个问题,但这不会执行脚本,您只是在获取一堆代码。

    根据this answer,Steam 有一些端点可用于获取市场数据。这些返回带有项目信息的简单 JSON 字符串。端点如下所示:

    http://steamcommunity.com/market/priceoverview/?currency=1&appid=[ID]&market_hash_name=[Item name]

    appid 是游戏的 ID,market_hash_name 是项目的 URL 编码名称。您可以方便地在您已经使用的 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":"$0.30",
       "volume":"94,440",
       "median_price":"$0.31"
    }
    

    由于您只关心中位数价格,我们可以使用带有 REGEXEXTRACT 的公式来仅提取该部分:

    这是在 A1 中粘贴 URL 的示例。

    =REGEXEXTRACT(JOIN("", IMPORTDATA(A1)), "median_price:""($[0-9]+.[0-9]+)")

    编辑:正如我链接的答案中提到的,您可以使用不同的数字测试 URL 中的 currency 参数以获取其他货币。在你的情况下,你可以尝试currency=2for pounds (£)。您还必须编辑 REGEXEXTRACT 以说明此更改:

    网址:http://steamcommunity.com/market/priceoverview/?currency=2&appid=730&market_hash_name=Clutch%20Case

    公式:=REGEXEXTRACT(JOIN("", IMPORTDATA(A1)), "median_price:""(£[0-9]+.[0-9]+)")

    【讨论】:

    • 谢谢它工作正常。只是有机会更改为 £ 而不是 $。太感谢了。
    • 此外,当我尝试乘以价格时,我得到此函数 MULTIPLY 参数 2 需要数值。但是 '$0.10' 是文本,不能强制转换为数字。
    • 我用一种获取磅值的方法编辑了我的答案。 MULTIPLY 函数根据您的语言环境将文本强制转换为数字,因此在您将其更改为 £ 后它应该可以工作,但您可能必须重新输入该函数。对我来说恰恰相反,它适用于 $ 但不适用于 £。
    • 我确实有一个错误“函数 REGEXEXTRACT 参数 2 值”median_price:“(£[0-9]+.[0-9]+)”与函数 REGEXEXTRACT 参数 1 值“{“success”:truelowest_price:”的文本不匹配: “0.10 美元”成交量:“39033”中位数_价格:“0.11 美元”}“。”
    • 您似乎没有更改 URL。您需要将其更改为currency=2,以便 Steam 返回以英镑为单位的价格。
    猜你喜欢
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 2013-02-10
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2015-07-06
    相关资源
    最近更新 更多