【问题标题】:How to extract dynamic website data with Google Script?如何使用 Google Script 提取动态网站数据?
【发布时间】:2017-05-10 07:33:16
【问题描述】:

我想从这个网站找到汇率数据。我相信这是一个所谓的动态网站(对不起,我是 javascript 新手),数据位于其他地方。我可以知道如何提取汇率吗? (例如,使用谷歌表格 IMPORTXML 功能或通过使用 javascript 创建新网站来提取数据)

资料链接:http://www.amcm.gov.mo/en/financial-information/middle-rates

更多信息: 我使用此代码从 Google 表格中的非动态网站获取数据,但这次失败了。在浏览了HTML之后,我发现我想要的数据是由这个网页中的一些Javascript生成的。

function getAMCMMidRate() {
  var link = 'http://www.amcm.gov.mo/zh/financial-information/middle-rates';
  var html = UrlFetchApp.fetch(link).getContentText();
  var doc = XmlService.parse(html);
  var html = doc.getRootElement();
  var menu = getElementById(html, 'result-table')[0];
  var output = XmlService.getRawFormat().format(menu);
  return output;
}

更多信息:

我今天尝试使用 javascript,这是我的代码。结果仅包含表的标题,但不包含内容。我该怎么办?

顺便说一句,我发现此代码仅适用于 IE,但不适用于 Chrome。我知道这是根据https://www.html5rocks.com/en/tutorials/cors/ 的CORS。但是我仍然无法使用本网站建议的代码在 Chrome 上运行。

<!DOCTYPE html>
<html>
<body>

<h2>Using the XMLHttpRequest Object</h2>

<div id="demo">
<button type="button" onclick="loadXMLDoc()">Change Content</button>
</div>

<script>

var myURL="http://www.amcm.gov.mo/en/financial-information/middle-rates";
function createCORSRequest(method, url){
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr){
    xhr.open(method, url, false);
} else if (typeof XDomainRequest != "undefined"){
    xhr = new XDomainRequest();
    xhr.open(method, url);
} else {
    xhr = null;
}
return xhr;
}

function loadXMLDoc() {
var request = createCORSRequest("GET", myURL);
if (request){
    request.onload = function(){
        var parser = new DOMParser();
        var xmlDoc=parser.parseFromString(request.responseText,"text/html");
        var tds= xmlDoc.getElementById("result-table");
        document.getElementById("demo").appendChild(tds);
    };
    request.send();
    }
}
</script>

【问题讨论】:

    标签: javascript html google-apps-script


    【解决方案1】:

    如果您使用的是纯javascript语言,您可以尝试DOM HTML提取HTML标签并获取您喜欢的任何内容。 我推荐 Jquery DOM 作为替代解决方案。看看https://api.jquery.com/category/miscellaneous/dom-element-methods/

    【讨论】:

    • kimdung,感谢您的回复。你在谈论Xpath吗?我了解 HTML 树中的特定数据可以使用谷歌表格中的 IMPORTXML 函数提取。但我发现数据(汇率)并不直接位于链接的 HTML 文件中。我无法找到数据的位置。
    • Xpath 是另一种选择。我已经很久没有使用它了。首先,您可以将该网页 (*.html) 下载到本地计算机。其次,尝试手动找出 id 为“结果表”的 HTML 标记。你需要的一切都在那个元素里面。使用 DOM HTML 或 Jquery DOM 来提取数据。完成后,找到另一种解决方案以在特定时间段内自动获取 HTML 内容。
    • 我觉得手动下载网页不是我想要的。我的目标是每天自动提取此网页内容并通过电子邮件发送给我。我在问题中添加了一些我今天尝试过的代码。
    • 下载 HTML 页面是为您的编码提供输入文件的真正第一步。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    相关资源
    最近更新 更多