我有以下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可以绕过此字体部分并检索文本。
答案 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*
从那里可以通过一些简单的字符串操作来检索所需的值(例如,使用点作为标记)。