如何用ImportXML将伦敦证交所分页表格导入Google Sheets?
解决Google Sheets导入伦敦证交所FTSE AIM成分股表格的问题
为什么IMPORTXML无法工作
目标页面的表格内容是通过JavaScript动态加载的,而IMPORTXML只能抓取页面初始加载的静态HTML,获取不到JS渲染后的表格数据,所以公式失效。
可行的导入方法
方法1:使用Google Apps Script(推荐,支持自动遍历分页)
通过脚本调用官方公开接口获取动态数据,自动处理所有分页:
- 打开你的Google Sheets,点击菜单栏「扩展程序」→「Apps Script」
- 删除默认代码,粘贴以下脚本:
function importFTSEAIMConstituents() { const baseUrl = "https://www.londonstockexchange.com/api/v1/indices/constituents/FTSE%20AIM%20All-Share?page="; let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); sheet.clearContents(); // 写入表头 const headers = ["公司名称", "股票代码", "ISIN", "行业", "权重"]; sheet.getRange(1, 1, 1, headers.length).setValues([headers]); let page = 1; let hasData = true; while (hasData) { const url = baseUrl + page; const response = UrlFetchApp.fetch(url); const data = JSON.parse(response.getContentText()); if (data.data.length === 0) { hasData = false; break; } // 格式化当前页数据 const rows = data.data.map(item => [ item.name, item.ticker, item.isin, item.sector, item.weight ]); // 写入表格 const startRow = sheet.getLastRow() + 1; sheet.getRange(startRow, 1, rows.length, rows[0].length).setValues(rows); page++; // 避免请求过于频繁触发限制 Utilities.sleep(1000); } SpreadsheetApp.getUi().alert("数据导入完成,共抓取" + (page - 2) + "页数据"); }
- 点击「保存」,给脚本命名(比如
FTSEAIMImporter) - 点击运行按钮,首次运行需完成权限授权(按提示操作即可)
- 运行结束后,当前工作表会自动填充所有成分股数据
方法2:手动导出CSV(适合偶尔获取数据)
如果不需要自动更新,可直接从官网导出完整数据:
- 打开目标页面,滚动到页面底部,找到「Download CSV」按钮,点击下载完整成分股CSV文件
- 打开Google Sheets,点击「文件」→「导入」→「上传」,选择下载的CSV文件完成导入
注意事项
- 脚本中使用的是伦敦证交所公开的API接口,若后续接口字段或URL变更,需对应调整脚本内容
- 使用脚本时,避免短时间内重复运行,防止触发网站的请求频率限制
内容的提问来源于stack exchange,提问作者Hazza
相关产品推荐
相关产品推荐

