0

我有以下 HTML 代码并想使用 Google Script 来获取 39.85 和 2.49*。

<table>
<tr>
  <td bgcolor="#CCCCCC">
    <font size="4" color="#000000" >Malaysia RM </font>
  </td>
  <td bgcolor="#CCCCCC">
    <font size="4" color="#000000" >39.85</font>
  </td>
  <td bgcolor="#CCCCCC" >
    <font size="4" color="#000000" >2.49*</font>
  </td>
</tr>
</table>

我使用以下 Google Scripts 但返回 0。

var page = UrlFetchApp.fetch('http://.......');
var pageHTML = page.getContentText();
var xml = Xml.parse(pageHTML, true);
var mainTable = xml.getElement("body").getElement("table").getElement("tr");
var buy = mainTable.getElements("td")[1].getText();
var sell = mainTable.getElements("td")[2].getText();

我发现所需的文本以每个 td 内的字体为界。是否有任何 API 可以绕过此字体部分并检索文本。

4

1 回答 1

0

我使用这个答案(Corey G)中的这个通用功能从html中获取文本,它可以完美地工作。

function getTextFromHtml(html) {
  return getTextFromNode(Xml.parse(html, true).getElement());
}


function getTextFromNode(x) {
  switch(x.toString()) {
    case 'XmlText': return x.toXmlString();
    case 'XmlElement': return x.getNodes().map(getTextFromNode).join('');
    default: return '';
  }
}


function test(){
  var xx='<table><tr><td bgcolor="#CCCCCC"><font size="4" color="#000000" >Malaysia RM </font></td><td bgcolor="#CCCCCC"><font size="4" color="#000000" >39.85</font></td><td bgcolor="#CCCCCC" ><font size="4" color="#000000" >2.49*</font></td></tr></table>'
Logger.log(getTextFromHtml(xx))
}

// Log result : [13-07-16 08:50:52:942 CEST] Malaysia RM 39.852.49*

从那里一些简单的字符串操作将允许您检索所需的值(例如使用点作为标记)。

于 2013-07-16T06:50:10.180 回答