如何将BSCScan钱包余额导入Google Sheets?importXML返回空内容如何解决
问题排查结论
你的IMPORTXML函数语法本身没有错误,返回#N/A提示内容为空是以下两个核心原因导致的:
- BSCscan的代币持仓数据为客户端JavaScript动态渲染,
IMPORTXML仅能抓取页面初始静态HTML源码,你要匹配的id=tb1的表格数据不会出现在静态源码中,无法匹配到对应内容 - BSCscan配置了基础反爬策略,
IMPORTXML默认发送的请求头特征会被识别为爬虫,返回的是人机验证页面而非正常的持仓数据,也会导致XPath匹配失效
可行解决方案
方案1:使用BSCscan官方API抓取(稳定性最高)
这是数据准确率最高、最不容易被拦截的方案:
- 注册BSCscan账号后即可领取免费API密钥,免费版支持每秒5次请求,完全满足个人持仓追踪的需求
- 调用BSCscan官方提供的账户ERC20代币余额查询接口,搭配
IMPORTDATA或者Google Apps Script解析返回的JSON数据即可,示例自定义函数逻辑参考:
function getBSCWalletTokenBalance(walletAddr, apiKey) { // 拼接官方API请求地址,参数包含钱包地址、你申请的API密钥 const apiUrl = `https://api.bscscan.com/api?module=account&action=tokentx&address=${walletAddr}&startblock=0&endblock=999999999&sort=asc&apikey=${apiKey}` const response = UrlFetchApp.fetch(apiUrl) const data = JSON.parse(response.getContentText()) // 自行处理返回的交易记录,统计对应代币的最新余额即可 }
- 除了余额数据,你还可以通过API同时拉取代币精度、合约地址等信息,方便后续对接价格接口计算总持仓市值。
方案2:自定义爬虫脚本绕过反爬
如果不想申请API,可以用Google Apps Script编写自定义抓取函数,绕开IMPORTXML的限制:
- 调用
UrlFetchApp时添加正常浏览器的User-Agent、Referer等请求头,避免被反爬策略拦截 - 可以引入cheerio库解析返回的页面内容,或者直接用正则匹配对应余额字段,比
IMPORTXML的XPath匹配容错性更高
方案3:使用公开加密货币持仓追踪模板
Google Sheets有大量公开的加密货币持仓追踪模板,已经内置了主流公链的钱包余额拉取逻辑,你只需要填入自己的钱包地址和对应公链的API密钥即可直接使用,不需要自行编写代码调试。
注意:无论使用哪种方案,都不要高频请求BSCscan服务,否则容易被临时限制访问,个人使用建议设置15分钟以上的同步间隔,完全可以满足价格波动追踪的需求。
内容的提问来源于stack exchange,提问作者mikeyelliot10
相关产品推荐
相关产品推荐

