Google Sheets使用IMPORTXML抓航班数据提示XML无法解析如何解决
Google Sheets 抓取FlightAware航班预计到达时间实现方案
原公式报错原因
你之前使用的IMPORTXML方案无法生效,核心问题有两个:
- XPath语法存在错误:
starts-with()函数参数格式、括号闭合位置、引号嵌套均不符合语法规则 - 数据源限制:FlightAware的航班动态数据为前端JavaScript动态渲染生成,
IMPORTXML仅能抓取页面初始静态HTML源码,无法获取JS加载完成后的实际时间节点,即使XPath写对也无法解析到目标内容。
可行实现方案
使用Google Apps Script编写自定义抓取函数,绕过IMPORTXML的静态内容限制,具体操作如下:
- 打开目标Google Sheets表格,点击顶部菜单栏「扩展程序」→「Apps Script」进入脚本编辑页面
- 清空编辑器内默认的占位代码,粘贴以下代码:
function GET_FLIGHT_ETA(flightUrl) { const requestOptions = { headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' }, muteHttpExceptions: true }; const pageContent = UrlFetchApp.fetch(flightUrl, requestOptions).getContentText(); // 匹配 04:19PM EDT 格式的预计到达时间 const etaMatch = pageContent.match(/\d{1,2}:\d{2}[AP]M\s[A-Z]{2,4}/); return etaMatch ? etaMatch[0] : "获取失败"; }
- 点击编辑器顶部保存按钮,为项目自定义名称(如FlightETACrawler),按照弹窗提示完成脚本授权(谷歌提示应用未验证时,点击「高级」→「前往对应项目」即可完成授权,所有数据仅在你个人的谷歌账号空间内运行)
- 回到表格单元格,输入公式即可提取目标格式的预计到达时间:
=GET_FLIGHT_ETA("对应航班的FlightAware追踪页面地址")
自动刷新配置
要实现航班延误/提前时数据自动更新,可配置定时触发器:
- 在Apps Script编辑页左侧点击时钟样式的「触发器」按钮
- 选择「添加触发器」,触发函数选择
GET_FLIGHT_ETA,根据需求设置触发频率(建议最短设置为15分钟/次,避免触发网站反爬限制),保存后即可按设定周期自动抓取最新时间写入单元格。
内容的提问来源于stack exchange,提问作者cquadez
相关产品推荐
相关产品推荐

