首页 > 解决方案 > Google 表格导入 XML 文本值不会显示

问题描述

我正在尝试将一些能源数据导入 Google 表格,但似乎无法显示该值,因为它只是 HTML 行中的文本,并在输出中显示为 --,---。我已尝试将 /text() 添加到 XPath,但这仍然无法正常工作。

需要导入数据的网站:

http://www.caiso.com/TodaysOutlook/Pages/default.aspx

谷歌表格中的公式:

=IMPORTXML("http://www.caiso.com/TodaysOutlook/Pages/default.aspx","//div[@class='overview-large-number']")

还尝试了以下 Xpath 并显示了相同的 --,---。

/html/body/div[2]/div[3]/div[4]/div/div/div[2]/div/div[1]/div[1]/div[1]
/html/body/div[2]/div[3]/div[4]/div/div/div[2]/div/div[1]/div[1]/div[1]/text()

网页截图:

带有数据的 Caiso 网页

带有数据的 HTML 元素:

<div class="overview-large-number">41,946 <span>MW</span></div>

Google 表格当前输出的屏幕截图:

谷歌表格截图

提前感谢您的任何见解。

标签: htmlxpathweb-scrapinggoogle-sheetsgoogle-sheets-importxml

解决方案


页面加载后会填充数据,因此您不能使用ImportXML(). 数据通过 URL 上的 HTTP Get 请求,http://www.caiso.com/outlook/SP/stats.txt并以 JSON 格式返回。

  1. 从此处获取 ImportJSON 脚本并将其添加到您的工作表(工具 > 脚本编辑器)。
  2. 这应该足以让你开始:
=Transpose(ArrayFormula(HLOOKUP(
{"AvailableCapacity","CurrentSystemDemand","todayForecastPeakDemand","histDemand","TodaysPeakDemand","tomorrowsForecastPeakDemand"},
ImportJSON("http://www.caiso.com/outlook/SP/stats.txt"),2,0)))

请注意,历史峰值已经是一个字符串,因此您可能需要做一些额外的工作才能得到这个数字。


推荐阅读