无法使用IMPORTXML导入网页表格数据到Google Sheets,求解决方案
Google Sheets导入动态渲染网页表格解决方案
失败原因
你使用的=IMPORTXML()函数仅能读取网页的静态源代码内容,目标网页的表格数据由JavaScript动态加载渲染,静态源代码中不存在你要定位的span[@class='table-column-text']元素,因此公式无法返回结果。
可行解决方案
方案一:通过Google Apps Script自定义函数抓取(推荐)
该方法直接提取页面嵌入的原始JSON数据,无需解析DOM,稳定性更高:
- 打开目标Google Sheets,点击顶部「扩展程序」→「Apps Script」进入脚本编辑器
- 删除默认的示例代码,粘贴以下代码:
function getFrenchTechTable() { const targetUrl = "https://ecosystem.lafrenchtech.com/lists/18872/list?showGrid=false"; const requestOptions = { 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" }, muteHttpExceptions: true }; try { const response = UrlFetchApp.fetch(targetUrl, requestOptions); const pageContent = response.getContentText(); // 匹配页面内嵌的初始化数据 const jsonMatch = pageContent.match(/window\.__INITIAL_STATE__ = (\{.*?\});<\/script>/s); if (!jsonMatch) return [["未匹配到页面数据"]]; const pageData = JSON.parse(jsonMatch[1]); // 提取表格列表项,可根据需求调整返回字段 const tableRows = pageData.lists.list.entities.items.map(item => [ item.name, item.website || "", item.description || "", item.location?.city || "" ]); // 插入表头 tableRows.unshift(["名称", "官网", "简介", "所在城市"]); return tableRows; } catch (e) { return [["抓取失败:" + e.toString()]]; } }
- 点击保存按钮,给项目任意命名后回到表格页面
- 在任意空白单元格输入
=getFrenchTechTable(),回车后等待数秒即可自动加载完整表格数据
方案二:手动导出静态数据
适合临时单次使用,无需编写代码:
- 用浏览器打开目标网页,等待表格完全加载完成
- 按F12打开开发者工具,切换到「元素」面板,找到表格对应的根节点,右键选择「复制」→「复制外层HTML」
- 直接将复制的内容粘贴到Google Sheets中,系统会自动识别为结构化表格
注意事项
- 自定义函数抓取触发反爬限制时,可以间隔一段时间再重试,或手动更新请求头中的User-Agent值
- 数据抓取完成后建议选中所有内容,按
Ctrl+C再按Ctrl+Shift+V粘贴为静态值,避免后续刷新时重复请求触发限制
内容的提问来源于stack exchange,提问作者Jean-Eric
相关产品推荐
相关产品推荐

