【问题标题】:Parsing a HTML bodyText using Javascript使用 Javascript 解析 HTML bodyText
【发布时间】:2018-10-28 09:23:00
【问题描述】:

我有一封 HTML 格式的电子邮件,其中包含我尝试使用 javascript 解析的文本和表格。文本解析工作得很好,我喜欢只需要运行一个正则表达式来从内容中获取我需要的东西,例如:

var name     = mail.bodyText.match(/Name:\s*(.*)/);

现在表格部分相当棘手。假设该表包含 3 列,我只想从列出相关数据的第一列中检索数据。当我输入以下内容时:

var column1Data = mail.bodyText.match(/Column1([\s\S]*?)/);
    if (column1Data) {
        var column1DataSplit = sources[1].split("\n");}
}

未检索到数据。

html表格示例:

关于如何检索 html 表格 bodyText 的任何想法?

谢谢。

【问题讨论】:

  • 没有足够的信息来回答。你能发布一个有问题的html的例子吗?
  • 嗨,Rocky,我添加了一张图片,展示了该表格的示例。
  • 抱歉,没说清楚。我的意思是要求您将 html 的示例发布为文本。
  • 寻求帮助的问题(“为什么/如何使此代码无法工作?”)必须包括所需的行为、特定问题或错误以及重现它所需的最短代码 在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建minimal reproducible example

标签: javascript html html-email


【解决方案1】:

为什么不直接在表中查找名称行?

var td = document.querySelectorAll('td:nth-child(1)');
for (var i in td) {
  var nameData = td[i].innerHTML
  if ( i > 0 && nameData ) // skip header row
  console.log(nameData)
}

【讨论】:

  • Jane 没有尝试测试表中是否存在'Jane Dublin'。目标是提取名称。请参阅 Jane 对以“实际上,这很简单”开头的问题的评论。
  • 查看最终更新的答案,应该可以满足您的需求。
  • 是的,一开始我不确定您是否在寻找更具体的东西。
  • 大家好,非常感谢您的快速回复。但让我换种说法:我不知道 HTML 表格代码是什么,所以我的解析器表现得好像它是有史以来最愚蠢的;它抓取随机电子邮件 bodyMails 并从中提取它想要的任何内容。现在,幸运的是,有一些简单的部分可以很容易地提取出来,因为数据通常遵循其关联的标签,例如:Name : Jane。但是,当涉及到一个标签的表格时,您有多个行,它变得很棘手,并且似乎只能通过正则表达式查询来撤消。
  • 如果你“不知道 HTML 表格代码是什么”,你怎么可能解析它们?要么您有要解析的 html 文本,要么您没有要解析的任何内容。如果您需要这方面的帮助,您将需要提供至少几个您想要解析的示例(html 文本)(在您的问题中)。也许我们可以从多个示例中进行概括,以获得在所有(或至少大多数)情况下都适合您的解决方案。
【解决方案2】:

您没有在您的问题中提供足够的详细信息,无法让我回答您的具体问题,但听起来您可能只是在询问如何从每行的第一列中获取 html的一张桌子。以下是您可以这样做的方法。

<table id="myTable">
  <tr>
    <td>r1c1</td>
    <td>r1c2</td>
  </tr>
  <tr>
    <td>r2c1</td>
    <td>r2c2</td>
  </tr>
</table>

<script type="text/javascript">
  var tds = document.querySelectorAll('td:nth-child(1)');
  for (td of tds) {
    console.log(td.innerHTML);
  }
</script>

控制台输出:

"r1c1"
"r2c1"

https://codepen.io/rockysims/pen/NOJMap?editors=1011

【讨论】:

    猜你喜欢
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2017-03-02
    • 1970-01-01
    • 2014-02-02
    • 2016-02-18
    相关资源
    最近更新 更多