1

我正在尝试在网站上抓取一个充满数据的 HTML 表格。不幸的是,该表的源代码如下所示:

<table border="1" cellspacing="0" cellpadding="3">

<tr>
<td bgcolor="silver"><font face="arial,helvetica" size="1">Last Name</font></td>

<td bgcolor="silver"><font face="arial,helvetica" size="1">First Name</font></td>

<td bgcolor="silver"><font face="arial,helvetica" size="1">Middle</font></td>
</tr>

<td valign="top"><font face="arial,helvetica" size="1">
Data</font></td>

<td valign="top"><font face="arial,helvetica" size="1">
Data</font></td>

<td valign="top"><font face="arial,helvetica" size="1">
Data</font></td>
</tr>   

<td valign="top"><font face="arial,helvetica" size="1">
More Data</font></td>

<td valign="top"><font face="arial,helvetica" size="1">
More Data</font></td>

<td valign="top"><font face="arial,helvetica" size="1">
More Data</font></td>
</tr>
</table>

请注意标题后面的每一行都没有凝视的“tr”标签。该表在浏览器中显示良好,但 html 敏捷包将无法识别没有开始标记的 tr 元素。无论如何我可以获得html敏捷包来解决这个问题吗?我宁愿自己不插入 tr 标签,但如果必须的话。

4

1 回答 1

2

您可以尝试解析tds 并将它们按 3 个项目分组,

var list = doc.DocumentNode.Descendants("td")
            .Select((td, i) => new { td, i })
            .GroupBy(x => x.i / 3)
            .Select(g => g.Select(t => t.td.InnerText).ToList())
            .ToList();
于 2012-11-08T23:04:50.687 回答