使用 importxml <div> 中的文本不会出现在 google 工作表中

text inside <div> does not appear in google sheets using importxml

所以我正在尝试使用 Xpath 将信息从站点导入到 google 电子表格中,但我在 <div>.

上遇到了一些困难
<div class="value-display__value">
<div title="" data-html-title="">
#295
</div>
</div>

我的想法是导入“#295”,这是我的代码。

IMPORTXML($C2,"//div[@class='value-display__value']//div/text()")

google 工作表似乎导入了空内容而不是 295

看起来排名数字是在运行时填充的,所以你不能单独使用 ImportXML()。该页面在加载后也没有 XHR,这告诉我数据已经在页面上的某个地方。这给你两个选择:

  1. 请求 API 密钥并使用 get_user API。更多信息 here and on their wiki。不过,他们说他们的 API 很快就会进入 v2,所以如果您想要 long-term 解决方案,请注意这一点。

  2. 从静态 HTML 文件中抓取正确的数据,因为那是数据所在的位置。我假设你在追求玩家的排名,所以我们可以分两个阶段进行:

    1. 您在评论中给出的 URL 已被删除。我在id为json-user的脚本标签中找到了排名数据,所以我使用了.

      =IMPORTXML("https://osu.ppy.sh/users/4504101","//script[@id='json-user']")
      
    2. 然后用一个REGEXEXTRACT()找你要的数据。我们感兴趣的字符串部分是:"rank":{"global":1,"country":1}},所以我做了

      =REGEXEXTRACT(A1,"""rank"":{""global"":(\d+),""country"":(\d+)")
      

      (\d+) 周围的 parens 为数字创建捕获组。这会产生两个单元格:第一个用于全球,第二个用于国家排名。如果您只对国家/地区排名感兴趣,可以将第一个 \d+.

      的 parens 去掉