我想在html上使用htmlagilitypack解析网站
下面是我的代码
var html = @"http://test.com";
HtmlWeb web = new HtmlWeb();
var htmlDoc = web.Load(html);
var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//table[@class='tableclass']//tr")
.Where(x => !x.Attributes["id"].Value.Contains("tableid"));
执行此代码时,将返回HTMLtable中的所有“ tr”。
以下是返回的HTML之一
<tr bgcolor="gray">
<td align="center" height="40">123</td>
<td align="center" width="56">
<div>
<img src="http://img.test.com/img.jpg" height="10" border="0" />
</div>
</td>
<td style="padding-left:3px;"><a href="/detail/detail.php?key=1234">THIS_1</a></td>
<td style="padding-left:3px;"><a href="/detail/detail.php?key=1234">THIS_2</a></td>
<td style="padding-left:3px;"><a href="/detail/add.php?site=1234"><font color='red'>blah</font></a></td>
<td align="center"><a href="/board/board.php?id=1">0</a></td>
<td align="center"><a href="/detail/detail.php?key=1234">0</a></td>
<td align="center"><a href="/board/board.php?id=1">0</a></td>
<td align="center"><a href="/board/board.php?id=1">0</a></td>
</tr>
下面是我的错误代码
foreach (var node in htmlNodes)
{
var str1 = node.ChildNodes["td"].InnerHtml;
var str2 = node.SelectNodes(".//td[@style='padding-left:3px;']");
}
我想将[THIS_1放入str1]和[THIS_2放入str2]。
答案 0 :(得分:0)
尝试按索引获取元素。例如:
foreach (var node in htmlNodes)
{
var str1 = node.SelectSingleNode("td[3]").InnerText; // THIS_1
var str2 = node.SelectSingleNode("td[4]").InnerText; // THIS_2
}