我是GAS的新手,我正在尝试取消https://finance.yahoo.com/quote/BTCUSD%3DX?p=BTCUSD%3DX上提供的汇率。看起来像这样。 enter image description here
当我使用函数importxml时,“ = importxml(” https://finance.yahoo.com/quote/BTCUSD%3DX?p=BTCUSD%3DX“,” // * [@ id ='quote-header-info'] / div [3] / div / div“)” ,这让我发现我要找的东西是空的。
然后我根据Not able to scrape data这里的问题来使用解析器。
function test() {
var url = "https://finance.yahoo.com/quote/BTCUSD%3DX?p=BTCUSD%3DX";
var fromText = '<div class="D(ib) Mend(20px)" data-reactid="34">';
var toText = '<span data-reactid="38">';
var content = UrlFetchApp.fetch(url).getContentText();
var scraped = Parser.data(content).from(fromText).to(toText).build();
var root = XmlService.parse(scraped).getRootElement();
var headerTr = root.getChild("thead").getChildren();
var res = headerTr.map(function(e) {return e.getChildren().map(function(f) {return f.getValue()})});
var len = res[0].length;
// Retrieve values
var valuesTr = root.getChild("tbody").getChildren();
var values = valuesTr.map(function(e) {return e.getChildren().map(function(f) {return f.getValue()})})
.map(function(e) {return e.length == len ? e : e.concat(Array.apply(null, new Array(len - e.length)).map(String.prototype.valueOf,""))});
Array.prototype.push.apply(res, values);
var ss = SpreadsheetApp.getActiveSheet();
ss.getRange(2, 18, res.length, res[0].length).setValues(res);
}
然后我被警告说“序言中不允许出现第1行错误。”,我对此不太了解。
非常感谢任何指导。