我正在尝试在网站上抓取一个充满数据的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标签,但如果必须的话。
答案 0 :(得分:2)
您可以尝试解析td
并将它们分为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();