HTML Agility Pack解析

asp.net-mvc html html-agility-pack

我是HTML Agility Pack的新手。我試圖找到一些文檔,但有一些問題。

我有以下代碼:

<div class="person">
<a href="blah1.html">Person 1</a>
</div>
<div class="person">
<a href="blah2.html">Person 2</a>
</div>
<div class="person">
<a href="blah3.html">Person 3</a>
</div>
<div class="person">
<a href="blah4.html">Person 4</a>
</div>

使用解析器,我怎樣才能獲取具有類人的div中的鏈接?

謝謝!

一般承認的答案

使用Html Agility Pack (可在NuGet上獲得):

HtmlDocument html = new HtmlDocument();
html.Load(path_to_html); // or html.LoadHtml(html_string)           
var links = html.DocumentNode.SelectNodes("//div[@class='person']/a")
                .Select(n => n.GetAttributeValue("href", null));

返回:

HtmlDocument html = new HtmlDocument();
html.Load(path_to_html); // or html.LoadHtml(html_string)           
var links = html.DocumentNode.SelectNodes("//div[@class='person']/a")
                .Select(n => n.GetAttributeValue("href", null));

熱門答案

以下XPath對應於您的描述:

//div[@class='person']/a/@href

它將返回第a元素的href屬性,這些元素直接位於任何div元素下,其class屬性等於person

如果您對jQuery樣式選擇器更熟悉,請查看使用CsQuery而不是HTML Agility Pack。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因