通过HtmlAgilityPack获取属性的值

我想通过HtmlAgilityPack获取属性的值。 Html代码:

      

我想获得最后一个href属性。

我的c#代码:

 HtmlWeb web = new HtmlWeb(); HtmlAgilityPack.HtmlDocument htmldoc = web.Load(Url); htmldoc.OptionFixNestedTags = true; var navigator = (HtmlNodeNavigator)htmldoc.CreateNavigator(); string xpath = "//link/@href"; string val = navigator.SelectSingleNode(xpath).Value; 

但该代码返回第一个href值。

以下XPath选择已定义href属性的link元素。 然后从您选择最后一个的链接:

 var link = doc.DocumentNode.SelectNodes("//link[@href]").LastOrDefault(); // you can also check if link is not null var href = link.Attributes["href"].Value; // "anotherstyle7.css" 

您还可以使用last() XPath运算符

 var link = doc.DocumentNode.SelectSingleNode("/link[@href][last()]"); var href = link.Attributes["href"].Value; 

更新:如果你想获得同时具有itemprophref属性的最后一个元素,那么使用XPath //link[@href and @itemprop][last()]//link[@href and @itemprop]如果你将采取第一种方法。

你需要这样的东西:

 HtmlWeb web = new HtmlWeb(); HtmlAgilityPack.HtmlDocument htmldoc = web.Load(Url); htmldoc.OptionFixNestedTags = true; var navigator = (HtmlNodeNavigator)htmldoc.CreateNavigator(); string xpath = "//link[@itemprop]/@href"; string val = navigator.SelectSingleNode(xpath).Value; 

好的,我来到这里:

 var link = htmldoc.DocumentNode.SelectSingleNode("//link[@itemprop='thumbnailUrl']"); var href = link.Attributes["href"].Value; 

将网页加载为Htmldocument并直接选择最后一个链接标记。

  HtmlWeb web = new HtmlWeb(); HtmlDocument doc = web.Load(Url); var output = doc.DocumentNode.SelectNodes("//link[@href]").LastOrDefault(); var data = output.Attributes["href"].Value; 

或者将网页加载为Htmldocument并获取所有选定链接标记的集合,然后使用循环行进然后访问最后选择标记属性。

  HtmlWeb web = new HtmlWeb(); HtmlDocument doc = web.Load(Url); int count = 0; string data = ""; var output = doc.DocumentNode.SelectNodes("//link[@href]"); foreach (var item in output) { count++; if (count == output.Count) { data=item.Attributes["href"].Value; break; } }