我正在尝试将雅虎的金融统计信息放到google sheets中。已使用此函数,但出现错误无法获取url。
=IMPORTHTML("https://finance.yahoo.com/quote/AAPL/key-statistics?p=AAPL","TABLE",3)
你知道我哪里搞错了吗?基本上,我想检索特定股票的利润率、营业利润率等单独的列
谢谢
发布于 2021-06-09 17:39:50
您不能使用IMPORTXML或IMPORTHTML函数,因为页面是由javascript在客户端构建的,而不是在服务器端。但是,所有数据都在一个大的json中,您可以使用以下命令捕获它:
var source = UrlFetchApp.fetch(url).getContentText()
var jsonString = source.match(/(?<=root.App.main = ).*(?=}}}})/g) + '}}}}'
var data = JSON.parse(jsonString)然后您可以浏览这些信息,并选择您需要的信息。要从json获取所有数据,请使用:
//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
https://stackoverflow.com/questions/67900856
复制相似问题