使用Google Script从HTML字体中抓取文本

时间:2013-07-16 06:34:53

标签: html google-apps-script

我有以下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脚本但返回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可以绕过此字体部分并检索文本。

1 个答案:

答案 0 :(得分:0)

我使用这个通用函数from this answer (Corey G)从html获取Text并且它可以完美地运行。

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*

从那里可以通过一些简单的字符串操作来检索所需的值(例如,使用点作为标记)。