如何获取osu用户页面全球排名的XPath用于Google Sheets ImportXML?
解决osu用户页面全球排名抓取问题
问题原因
直接复制浏览器检查元素的XPath在Google Sheets ImportXML 中失效,核心原因是osu用户页面的排名数据是JavaScript动态渲染的——服务器返回的初始HTML里并没有排名元素,而ImportXML只能解析静态HTML,自然找不到对应内容,返回空值。
可行解决方案
利用页面中内置的静态JSON数据(服务器直接返回,无需JS加载)提取排名,步骤如下:
抓取页面内置的用户数据JSON
使用ImportXML获取页面中存储用户所有信息的script标签内容:=IMPORTXML("https://osu.ppy.sh/users/13992437", "//script[@id='json-user']/text()")提取并格式化全球排名
用REGEXEXTRACT从JSON字符串中匹配global_rank对应的数值,再用TEXT格式化带逗号的显示效果:=TEXT(REGEXEXTRACT(IMPORTXML("https://osu.ppy.sh/users/13992437", "//script[@id='json-user']/text()"), """global_rank"":(\d+)"), "#,###")执行后会返回目标数值
185,917。
更稳定的替代方案
如果担心页面结构变动导致抓取失效,可以使用osu官方API获取用户数据。需要注册开发者账号并获取密钥,请求格式示例:
GET /api/v2/users/{user_id}?mode=osu
返回的JSON中直接包含statistics.global_rank字段,可直接提取数值。
内容的提问来源于stack exchange,提问作者NorthRL
相关产品推荐
相关产品推荐

