2013-07-16 24 views
0

我有以下HTML代碼,並希望使用Google腳本獲得39.85和2.49 *。使用Google腳本從HTML字體中抓取文本

<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> 

我採用以下谷歌的腳本,但回來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

我使用這個通用函數from this answer (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* 

從那裏一些簡單的字符串操作可以讓你找回你想要的值(使用點作爲例如標記)。