【发布时间】:2019-09-17 05:55:12
【问题描述】:
我有一张这样的桌子
<table>
<tr>
<th>Some Text</th>
</tr>
<tr><td>
....
</td>
</tr>
<tr>
<th>
<a href="" title="Students">Names</a>
</th>
<td>
<a href="">Target Text 1</a>
<a href="">Target Text 2</a>
</td>
</tr>
<tr>
<th>
<a href="" title="Classes">ClassNo</a>
</th>
<td>
<a href="">Some Text</a>
<a href="">Some Text</a>
</td>
</tr>
.....
我需要获取目标文本。
“名称”是一个标题。它不是一个变量。 在这种情况下,我必须先到达带有 innerText = Names 的节点。
当我尝试这样的事情时;
htmlDoc.LoadHtml(html);
foreach (HtmlNode table in htmlDoc.DocumentNode.SelectNodes("//table"))
{
foreach (HtmlNode row in table.SelectNodes("tr"))
{
foreach (HtmlNode cell in row.SelectNodes("th|td"))
{
if (cell.InnerText.Contains("Names"))
{
MessageBox.Show(cell.NextSibling.InnerText);
}
}
}
}
输出就像单个文本。 (目标文本之间没有空格)因为我找不到访问各个链接的方法。我只能将它们作为单个文本获取。
Target Text 1Target Text 2
我也相信有更好、更合适的方式来获取这些文本。但我找不到。如果可以搜索innerText "Names"(它是<th>)然后在<td> 中得到<a>,那就太好了。
链接可以超过2个。所以基本上我需要得到所有链接。
<td>
<a href="">Target Text 1</a>
<a href="">Target Text 2</a>
<a href="">Target Text 3</a>
<a href="">Target Text 4</a>
</td>
【问题讨论】:
标签: c# .net html-agility-pack