【问题标题】:Grabbing Text from HTML Font using Google Script使用 Google Script 从 HTML 字体中抓取文本
【发布时间】:2013-07-16 06:34:52
【问题描述】:

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

【问题讨论】:

    标签: html google-apps-script


    【解决方案1】:

    我使用这个通用功能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*
    

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

    【讨论】:

      猜你喜欢
      • 2013-01-26
      • 1970-01-01
      • 2021-05-31
      • 2021-10-07
      • 1970-01-01
      • 2023-03-19
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多