使用Javascript解析HTML正文

使用Javascript解析HTML正文,javascript,html,html-email,Javascript,Html,Html Email,我有一封HTML格式的电子邮件,其中包含我正试图使用javascript解析的文本和表格。文本解析工作得很好,我喜欢只需要运行正则表达式就可以从内容中获得所需的内容,例如: var name = mail.bodyText.match(/Name:\s*(.*)/); 现在桌子的部分很棘手。假设表包含3列,我只想从列出关联数据的第一列检索数据。当我键入以下内容时: var column1Data = mail.bodyText.match(/Column1([\s\S]*?)/);

我有一封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表格正文吗


谢谢。

您的问题中没有提供足够的细节,我无法回答您的具体问题,但听起来您可能只是在问如何从表中每行的第一列获取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>

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

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

没有足够的信息来回答。你能发布一个有问题的html示例吗?嗨,洛基,我添加了一个显示该表格示例的图像。对不起,我没说清楚。我的意思是要求你以文本形式发布一个html示例。请阅读以下内容:寻求帮助的问题(“为什么没有/如何使此代码工作?”)必须包括所需的行为、特定的问题或错误,以及在问题本身中复制所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建。Jane没有尝试测试表中是否存在
'Jane Dublin'
。目标是提取名称。参见Jane对问题开头的评论“事实上,这很简单”。参见最终更新的答案,应该会给你你所需要的。是的,一开始我不确定你是否在寻找更具体的内容。嗨,伙计们,非常感谢你的快速回复。但让我换一种说法:我不知道HTML表代码是什么,所以我的解析器的行为就像是有史以来最愚蠢的解析器一样;它抓取随机的电子邮件和邮件,并从中提取它想要的任何东西。现在,幸运的是,有一些简单的部分可以很容易地提取出来,因为数据通常跟在相关的标记后面,比如:Name:Jane。但是当涉及到带有一个标记的表时,您有多行,这变得很棘手,而且似乎只需要正则表达式查询就可以撤销。如果您“不知道HTML表代码是什么”,您怎么可能解析它们?要么你有html文本要解析,要么你没有任何东西要解析。如果你想得到这方面的帮助,你需要提供至少几个例子(html文本)来说明你想解析什么(在你的问题中)。也许我们可以从多个例子中归纳出一个在所有(或至少大多数)情况下都适用的解决方案。
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)
}