问题描述
我一直在使用 ImportHTML 从这个链接中提取 MLB 统计数据,没有问题:“https://widgets.sports-reference.com/wg.fcgi?css=1&site=br&url=%2Fleagues%2FMLB%2F2021-standard -batting.shtml&div=div_players_standard_batting”。我只是在 Google 表格上复制表格。
但是,源表现在变得如此之大,以至于我的工作表中出现此错误:“url 内容中的资源超出了最大大小。”
我知道我需要转向 Google Apps Script 和 URLFetchApp,但我的业余方法只产生空单元格。我可以使用这种方法在我的链接中重现表格吗?
感谢您的指导和您的时间。
解决方法
我通过从标签中删除所有属性来简化源代码,然后解析表...
100
,
从表中检索数据的更好方法:
function importTableHTML(url) {
var html = '<table' + UrlFetchApp.fetch(url).getContentText().match(/(?<=\<table).*(?=\<\/table)/g) + '</table>';
var trs = [...html.matchAll(/<tr[\s\S\w]+?<\/tr>/g)];
var data = [];
for (var i=0;i<trs.length;i++){
var tds = [...trs[i][0].matchAll(/<(td|th)[\s\S\w]+?<\/(td|th)>/g)];
var prov = [];
for (var j=0;j<tds.length;j++){
donnee=tds[j][0].match(/(?<=\>).*(?=\<\/)/g)[0].replace(/ /g,' ');
if(donnee.indexOf("</a>")>-1){
prov.push(donnee.match(/(?<=\>).*(?=\<\/)/g)[0]);
}else{
prov.push(donnee);
}
}
data.push(prov);
}
return(data);
}