You need to enable JavaScript to run this app. Google Sheets使用IMPORTHTML抓取ESPN足球数据时列项不全的咨询
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets使用IMPORTHTML抓取ESPN足球数据时列项不全的咨询

ESPN足球积分榜抓取结果拆分的整合方案

ESPN的英超积分榜页面为了实现横向滚动时固定球队名列的交互效果,刻意把原本的整表拆成了两个独立的HTML <table> 分别渲染,这就是IMPORTHTML公式只能抓到半张表的核心原因,不需要额外爬取工具,用以下两种方式就能拿到完整全量数据:

纯公式快速拼接

两个抓取结果的行顺序完全对应,不存在基础的行匹配偏差,直接用HSTACK函数横向合并两个抓取结果即可,在你要放完整表格的起始单元格输入:

=HSTACK(
  IMPORTHTML("https://www.espn.in/soccer/table/_/league/eng.1","table",1),
  IMPORTHTML("https://www.espn.in/soccer/table/_/league/eng.1","table",2)
)
  • 合并后如果出现重复列(比如排名值在两个表中重复出现),搭配QUERY函数把第二个抓取结果里的冗余列删掉就行。举个例子,如果发现table2的第一列和table1的最后一列都是排名字段,就把table2的抓取部分改写为QUERY(IMPORTHTML("https://www.espn.in/soccer/table/_/league/eng.1","table",2), "select Col2,Col3,Col4,Col5", 1),按需选择需要保留的数值列。
  • 如果你的Google Sheets版本不支持HSTACK,可以把两个抓取结果分别放在两个相邻的空白区域,按行顺序手动把列拼接起来,不需要高级函数也能实现同样效果。

自定义脚本稳定抓取

IMPORTHTML的原生逻辑是把页面上所有独立的<table>标签作为单独的抓取数据集,对这种刻意拆分前端结构的页面适配性很差。可以通过Google Sheets的Apps Script写一个简单的自定义函数,直接定位页面上包裹两个拆分table的父级容器,把容器下所有行列的内容按顺序提取出来,从根源上避免表被拆分的问题,抓取结果会和页面上展示的完整表格完全一致。

常见问题排查

  • 如果合并后出现行错位,优先检查两个抓取结果里是否混进了升降级提示的分隔空行,用FILTER函数把两个数据集里的空值行过滤掉再拼接即可解决。
  • 注意IMPORTHTML的调用频率限制,建议把抓取结果的刷新间隔设置在1小时以上,避免触发目标站点的反爬机制导致抓取失败。

内容的提问来源于stack exchange,提问作者kcm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.02 10:45:06