我如何使用HtmlAgilityPack获得这个值
本文关键字:何使用 HtmlAgilityPack | 更新日期: 2023-09-27 18:11:44
不知道它叫什么,但它代表创建论坛主题的用户:
...
<a href="http://myforum.com/forum/most-fav-action-movies/" id="thread_title_10178" style="font-weight:bold">Most Favorite Action Movies</a>
</div>
<div class="smallfont">
<span style="cursor:pointer" onclick="window.open('http://myforum.com/forum/members/u506/', '_self')">JOANVENGE</span>
</div>
</td>
<td class="alt2" title="Replies: 17, Views: 651">
<div class="smallfont" style="text-align:right; white-space:nowrap">
...
所以在这种情况下,它是"JOANVENGE"字符串我试图得到。目前,我正在使用以下命令获取a
链接:
IEnumerable<HtmlNode> threadLinks = doc.DocumentNode.
Descendants ( "a" ).
Where ( link => link.Id.StartsWith ( linkIdPrefix ) );
但是它只包含论坛的url和id。这就是为什么我不确定如何获得超出a
链接的文本。
编辑:我目前正在创建另一个IEnumerable
,它只收集"span",然后将它们与第一个列表匹配,但这似乎很麻烦和脆弱,因为出于某种原因,span
链接比a
链接多1个,所以我正在做index + 1
。现在它工作得很好,但如果我能直接从第一个列表的链接中访问这些信息,它会更健壮。下一个和上一个节点,直到我击中null
值也没有达到span
部分。无论如何,这些都是htmllagilitypack的独立实体
您可以使用XPATH。例如下面的代码:
HtmlDocument doc = new HtmlDocument();
doc.Load("test.htm");
// get any SPAN element recursively with a STYLE attribute set to 'cursor:pointer'
Console.WriteLine(doc.DocumentNode.SelectSingleNode("//span[@style='cursor:pointer']").InnerHtml);
将转储
JOANVENGE