ImportHTML抓取NBA球员道具数据报错:URL资源内容超出最大大小
报错原因说明
Google Sheets 内置的 IMPORTHTML 函数对可抓取的资源体积有固定硬限制,目标网站今年新增下拉选项后,页面加载的DOM内容总大小超过了这个阈值,就会触发「Resource at url contents exceeded maximum size」报错,该限制属于内置函数的固有属性,无法通过调整函数参数突破,确实需要通过自定义脚本的方式解决。
可行解决方向
1. 自定义Google Apps Script抓取方案(最适配当前场景,新手友好)
你无需掌握复杂的脚本开发逻辑,按照以下步骤操作即可直接替换原有IMPORTHTML的功能:
- 打开你正在使用的Google Sheets,点击顶部菜单栏「扩展程序」-「Apps Script」进入脚本编辑器
- 清空编辑器里的默认代码,粘贴以下现成的自定义抓取代码:
function customImportHTML(url, tableIndex) { // 抓取页面完整内容 const html = UrlFetchApp.fetch(url, { headers: {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"} }).getContentText(); // 匹配页面所有表格 const tables = html.match(/<table[^>]*>[\s\S]*?<\/table>/gi); if (!tables || !tables[tableIndex-1]) return "未找到对应编号的表格"; const targetTable = tables[tableIndex-1]; // 解析表格行与单元格内容 const rows = targetTable.match(/<tr[^>]*>[\s\S]*?<\/tr>/gi); const result = []; rows.forEach(row => { const cells = row.match(/<t[dh][^>]*>[\s\S]*?<\/t[dh]>/gi); const rowData = cells.map(cell => cell.replace(/<[^>]+>/g, '').trim()); result.push(rowData); }); return result; }
- 点击保存按钮,给项目随便起个名字后回到表格页面,直接用
=customImportHTML("https://www.scoresandodds.com/nba/props", 1)即可调用,和你之前的IMPORTHTML用法完全一致,没有资源大小限制。
2. 后续使用优化建议
- 不要设置短于1小时的自动刷新规则,频繁请求容易触发网站反爬机制导致抓取失败
- 如果后续遇到部分数据抓取不全的情况,可以在开发者工具里找到网站加载表格数据的独立API接口,用脚本直接抓取接口返回的JSON数据,体积更小、速度更快也更稳定。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

