使用importxml,<div>中的文本不会显示在Google工作表中

问题描述

因此,我正在尝试使用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及其wiki上有更多信息。他们说他们的API即将发布到v2,因此,如果需要长期解决方案,请当心。

  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+)周围的括号为数字创建捕获组。这将产生两个单元:第一个单元用于全球,第二个单元用于国家/地区排名。如果您只对国家/地区排名感兴趣,则可以将括号排除在第一个\d+之外。