首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IMPORTHTML无法获取URL

IMPORTHTML无法获取URL
EN

Stack Overflow用户
提问于 2021-06-09 17:00:39
回答 1查看 55关注 0票数 0

我正在尝试将雅虎的金融统计信息放到google sheets中。已使用此函数,但出现错误无法获取url。

=IMPORTHTML("https://finance.yahoo.com/quote/AAPL/key-statistics?p=AAPL","TABLE",3)

你知道我哪里搞错了吗?基本上,我想检索特定股票的利润率、营业利润率等单独的列

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-06-09 17:39:50

您不能使用IMPORTXML或IMPORTHTML函数,因为页面是由javascript在客户端构建的,而不是在服务器端。但是,所有数据都在一个大的json中,您可以使用以下命令捕获它:

代码语言:javascript
复制
  var source = UrlFetchApp.fetch(url).getContentText()
  var jsonString = source.match(/(?<=root.App.main = ).*(?=}}}})/g) + '}}}}'
  var data = JSON.parse(jsonString)

然后您可以浏览这些信息,并选择您需要的信息。要从json获取所有数据,请使用:

代码语言:javascript
复制
//mike steelson
let resultat = []; 
function getDataFromYahoo(url) {
  var source = UrlFetchApp.fetch(url).getContentText()
  var jsonString = source.match(/(?<=root.App.main = ).*(?=}}}})/g) + '}}}}'
  var data = JSON.parse(jsonString)
  getAllData(1,eval(data),'data')
  return resultat
}
function getAllData(niv,obj,id) {
  const regex = new RegExp('[^0-9]+');
  for (let p in obj) {
    var newid = (regex.test(p)) ? id + '.' + p : id + '[' + p + ']';
    if (obj[p]!=null){
      if (typeof obj[p] != 'object' && typeof obj[p] != 'function'){
        resultat.push([niv, newid, obj[p]]);
      }
      if (typeof obj[p] == 'object') {
        if (obj[p].length){
          resultat.push([niv, newid, '']);
        }else{
          resultat.push([niv, newid, '']);
        }
        niv+=1;
        getAllData(niv, obj[p], newid );
        niv-=1
      }
    }
  }
}  

https://docs.google.com/spreadsheets/d/1EKu4MbuwZ6OTWKvyIJrMfnXf7gXfU8TWU3jwV4XEztU/copy

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67900856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档