通过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;
更新:如果你想获得同时具有itemprop
和href
属性的最后一个元素,那么使用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; } }