c# - HtmlAgilityPack - 如何在使用 selectnodes 时首先选择一个标签 href

标签 c# asp.net-mvc html-agility-pack

我正在尝试选择第一个标签并获取 href 值。但问题是我正在使用 SelectNodes。

这是我要从中选择 href 值的代码:

<li>
<a class="img" href="link1"></a>
<div class="m_text">
<a class="title" href="link2" rel="27418">A Story</a>
<p><span class="stars star45"></span><span class="rate">4.35</span></p>
<p class="info" title="Action"></p>
<p class="nowrap latest"><a href = "link3" >< span class="nowrap">A Story</span> 29</a></p>
</div>
</li>

<li>
<a class="img" href="link1"></a>
<div class="m_text">
<a class="title" href="link2" rel="27418">A Story</a>
<p><span class="stars star45"></span><span class="rate">4.35</span></p>
<p class="info" title="Action"></p>
<p class="nowrap latest"><a href = "link3" >< span class="nowrap">A Story</span> 29</a></p>
</div>
</li>

现在如您所见,我必须多次选择标签的第一个 href 值,然后我将使用 foreach。

我想要获取值的 html 是:

<a class="img" href="link1"></a>

我的代码:

 var documentx = new HtmlWeb().Load(post.ExtLink);
        var div = documentx.DocumentNode.SelectNodes("//div[@id='content']/*//ul[@class='list']//li");

        var test = div.Descendants("a")
                            .Select(a => a.GetAttributeValue("href", null))
                            .Where(s => !String.IsNullOrEmpty(s))
                            .ToList();

我的代码工作正常,但它获取了所有 a 标签值,而我只想获取第一个 a 标签 href 值。

最佳答案

改变

.Where(s=> !String.IsNullOrEmpty(s))

.FirstOrDefault(s=> !String.IsNullOrEmpty(s))

并删除末尾的 .ToList()。

关于c# - HtmlAgilityPack - 如何在使用 selectnodes 时首先选择一个标签 href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53288719/

相关文章:

c# - csharp 和 c++ 之间的命名管道

c# HTMLAgilityPack 删除 <img> 节点

c# - HtmlAgilityPack 替换节点

c# - 使用 explorer.document 作为 HtmlAgilityPack 的源 HtmlDocument

c# - 如何从 Acumatica 中当前用户的 UserPreferences 获取 DefaultSite

c# - 什么是物化?

C# : "A first chance exception of type ' System. InvalidOperationException'”

c# - 提交简单表单 MVC ASP.Net 网站的堆栈溢出异常

c# - 生成全局 ViewData 的更好方法?

javascript - 如何删除发布版本中的 console.log 行?