Google Sheets ImportXML returns "Resource at URL not found" 错误

Google Sheets ImportXML returns "Resource at URL not found" error

我正在尝试使用导入XML 函数将数据从 Yahoo Finance 提取到 Google 表格中。更具体地说,我试图从特定股票的“关键统计”页面中提取它。出于某种原因,每当我尝试从此特定页面提取值时,我都会收到“未找到 URL 处的资源”错误。我尝试在页面上禁用 JavaScript 以查看是否是问题所在,但一切似乎都很好。但是,它专门在此页面上,而不是在其他页面上。例如,我不能完全从 https://finance.yahoo.com/quote/TSLA/key-statistics?p=TSLA, however, I can pull data from https://finance.yahoo.com/quote/TSLA 中提取 XML 数据。是 URL 错误还是 Yahoo 以某种方式阻止数据被提取的问题?

Tries to pull "Return on Assets" from Statistics page

Pulls Market Cap from main page

显然,Yahoo 似乎对其网站进行了一些更改,导致 Google Sheets 的 IMPORT 功能无法在 Yahoo Finance 上的某些 tickers/webpage 上正常工作。

作为一种变通方法,我建议使用 Google 表格的内置 GOOGLEFINANCE() 函数,或者尝试寻找其他数据源来为您提供所需的相同信息。

正如此处所解释的,雅虎网站的内容是通过javascript动态构建的。 https://webapps.stackexchange.com/questions/115664/how-to-know-if-google-sheets-importdata-importfeed-importhtml-or-importxml-fun 然而,源代码包含一个名为 root.App.main 的 json 字符串中的所有元素。这个 json 太大了,无法在这里进行探讨,但我们可以截取一部分,例如:

function getJSON() {
  var url = SpreadsheetApp.getActiveSheet().getRange("A1").getValue()
  var source = UrlFetchApp.fetch(url).getContentText()
  var data1 = source.match(/(?<="shortName":"Tesla, Inc.",).*/g)
  data2 = data1[0].substring(0,1200).match(/.*(?=,"uuid")/g)
  console.log("{"+data2[0]+"}")
}

接下来的问题是根据需要探索 json。我在这里做了一个小测试https://docs.google.com/spreadsheets/d/1EfHtFr51cJdR6PK2E8cDtMAmUHJNQcOPeOs_6j0GZZc/edit?usp=sharing