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

时间:2018-11-13 20:08:21

标签: 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();

我的代码工作正常,但是它获得了所有标签值,而我只希望获得第一个标签href值。

1 个答案:

答案 0 :(得分:0)

更改

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

收件人

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

并删除最后的.ToList()。