im tryng将来自该网站的货币信息带到我的Google表格:
https://www.bbva.mx/personas/informacion-financiera-al-dia.html
我正在尝试使用IMPORTHTML和IMPORTXML,但是这些都不对我有用
我需要的信息是这个
对此有任何帮助吗?
也许使用Apps脚本?
编辑: 这是我正在使用的代码
function fetchData() {
var url = 'https://www.bbva.mx/personas/informacion-financiera-al-dia.html';
var dolarTable = UrlFetchApp.fetch(url).getContentText();
Logger.log(dolarTable)
var match = dolarTable.match(/Dólar(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(<\/tr>)/);
var string = match[0].replace(/(\r\n|\n|\r)/gm," ");
string = string.replace(/\s/g, "");
var dollar = string.search("\\$");
var value = string.indexOf("$", dollar + 1);
var substrings = string.substring(value);
var almostThere = substrings.substring(0).indexOf("<");
var number = substrings.substring(0, almostThere);
return SpreadsheetApp.getActiveSpreadsheet().getSheets[0].getRange('A1').setValue(number);
}
答案 0 :(得分:0)
好的,所以您遇到的问题是,在Sheets中,IMPORTHTML和IMPORTXML Imports data from a table or list within an HTML page中,您尝试访问的网页正在使用活动服务器脚本来生成HTML内容。
在Apps脚本中,有一个内置UrlFetchApp
class,您可以使用它来获取HTML数据-it has its own limitations,但可以将页面中的数据获取到脚本中以供使用。< / p>
您要获取的页面使用包含.aspx
文件的框架,而正是此生成的内容包含了您要检索的信息。坦白地说,此解决方案是临时的,因为我使用UrlFetchApp.fetch()
来获取数据,然后使用正则表达式和内置的JavaScript字符串函数来尽可能通用地获取信息:
function fetchData() {
var dolarTable = UrlFetchApp.fetch('https://bbv.infosel.com/bancomerindicators/indexv8.aspx').getContentText();
var match = dolarTable.match(/Dólar(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(<\/tr>)/);
var string = match[0].replace(/(\r\n|\n|\r)/gm," ");
string = string.replace(/\s/g, "");
var dollar = string.search("\\$");
var value = string.indexOf("$", dollar + 1);
var substrings = string.substring(value);
var almostThere = substrings.substring(0).indexOf("<");
var number = substrings.substring(0, almostThere);
SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange('A1').setValue(number);
}
这将获取页面的HTML数据,然后通过子字符串过滤减少所需的内容。我一直保持通用,只要页面的结构变化不大,即使金额的值发生变化,它也仍然可以正常工作。