如何使用 HtmlAgilityPack 获取子锚点的属性

本文关键字:属性 何使用 HtmlAgilityPack 获取 | 更新日期: 2023-09-27 18:36:57

我正在学习HtmlAgilitiPack,我想问你,如何获得值(我想得到这个值):

从 HTML 页面:

<div id="js_citySelectContainer" class="select_container city_select shorten_text replaced"> 
<span class="dropDownButton ownCity coords">
<a>i want get this value</a>
</span>
</div>

C# 代码:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
Console.writeln(echo i want get this value);

我试过了:

doc.DocumentNode.Descendants("span").Where(s => s.GetAttributeValue("class", "") == "dropDownButton ownCity coords").First().InnerText;

但是这不行,你能帮我吗?谢谢。

如何使用 HtmlAgilityPack 获取子锚点的属性

您可以使用 XPATH 语法:

var span = doc.DocumentNode.SelectSingleNode("//span[@class='dropDownButton ownCity coords']");
var anchorText = span.ChildNodes["a"].InnerText;

您还可以使用 LINQ:

var anchorTexts = 
    from span in doc.DocumentNode.Descendants("span")
    where span.GetAttributeValue("class", "") == "dropDownButton ownCity coords" 
    from anchor in span.Descendants("a") 
    select anchor.InnerText;
string anchorText = anchorTexts.FirstOrDefault();

我认为您正在尝试获取span文本,您需要a文本

试试这个

doc.DocumentNode.Descendants("span")
.Where(s => s.GetAttributeValue("class", "") == "dropDownButton ownCity coords")
.First().Descendants("a").First().InnerText;