问题描述
因此,我正在尝试使用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,这告诉我数据已经在页面上某处。这给您两个选择:
-
请求一个API密钥并使用
get_user
API。 here及其wiki上有更多信息。他们说他们的API即将发布到v2,因此,如果需要长期解决方案,请当心。 -
从静态HTML文件中获取正确的数据,因为这是数据所在的位置。我假设您在玩家的排名之后,所以我们可以分两个阶段进行此操作:
-
这会抓取您在评论中提供的URL。我在ID为
json-user
的脚本标签中找到了排名数据,因此我使用了。=IMPORTXML("https://osu.ppy.sh/users/4504101","//script[@id='json-user']")
-
然后使用
REGEXEXTRACT()
查找所需的数据。我们感兴趣的字符串部分是:"rank":{"global":1,"country":1}}
,所以我这样做了=REGEXEXTRACT(A1,"""rank"":{""global"":(\d+),""country"":(\d+)")
(\d+)
周围的括号为数字创建捕获组。这将产生两个单元:第一个单元用于全球,第二个单元用于国家/地区排名。如果您只对国家/地区排名感兴趣,则可以将括号排除在第一个\d+
之外。
-