使用IMPORTXML抓取网页汇率导入Google Sheets报错为空如何解决
IMPORTXML抓取汇率报错问题排查与解决
问题根因
你当前的操作逻辑和函数语法本身没有错误,报错是两个核心特性不匹配导致的:
- 目标页面为Angular框架开发的客户端动态渲染页面:
IMPORTXML仅能读取页面初始返回的静态HTML源码,你看到的汇率数值是页面加载完成后JS调用接口动态插入到DOM中的,静态源码中不存在你复制的XPath对应的元素,所以返回空内容。 - 手动选择「越南」作为收款国是客户端本地操作:直接请求
http://smileswallet.com/simulator/默认URL时,请求没有携带国家选择参数,服务端返回的初始内容不会加载越南对应的汇率数据。
可行解决方法
方案1:调用站点内置汇率接口(最高效)
该站点的汇率数据是通过单独的接口请求返回的,你可以自行提取接口后用自定义脚本读取:
- 打开目标页面后按
F12启动浏览器开发者工具,切换到「网络」面板,筛选「Fetch/XHR」类请求 - 在页面下拉选择越南作为收款国,在网络请求列表中找到新增的、返回JSON格式汇率数据的接口
- 确认接口为无鉴权的公开GET请求后,打开Google Sheets的「扩展程序-Apps Script」,输入以下自定义函数代码,按接口实际返回结构调整取值逻辑后保存:
function getVNDExchangeRate() { // 替换为你提取到的实际接口URL const rateApiUrl = "https://xxx"; const res = UrlFetchApp.fetch(rateApiUrl); const rateData = JSON.parse(res.getContentText()); // 替换为实际JSON结构中越南汇率对应的字段路径 return rateData.data.send_to_vietnam.rate; }
- 回到表格,直接输入
=getVNDExchangeRate()即可获取实时汇率。
方案2:使用静态渲染中转
如果无法提取到可用接口,可以使用支持JS动态渲染的抓取工具,将页面渲染完成后导出为可被IMPORTXML读取的静态HTML地址,再用原函数抓取即可。
内容的提问来源于stack exchange,提问作者java_org_apren
相关产品推荐
相关产品推荐

