【问题标题】:How can i get all value from child node using htmlagilitypack?如何使用 htmlagilitypack 从子节点获取所有值?
【发布时间】:2019-05-28 06:11:08
【问题描述】:

如何从子节点获取值,例如 href 值,并使用带有父节点类名的 html 敏捷包将它们添加到列表中?

我试过这段代码但失败了

var pagedivs = htmlDocument.DocumentNode.SelectNodes("div").Where(e => e.GetAttributeValue("class", "").Equals("pagination"))
                .Where(k => k.Descendants().Any(t => t.Name == "li")).ToList();

网页中的 HTML 代码:

<div class="pagination">
        <ul class="pagination-list">
            <li class="hidden-phone current"><a title="1" href="" class="pagenav">1</a></li>
            <li class="hidden-phone"><a title="2" href="/collections/remarkable-products?page=2" class="pagenav">2</a></li>
            <li><a title="Next page" href="/collections/remarkable-products?page=2" class="pagenav"><i class="fa fa-chevron-right"></i></a></li>
        </ul>
        <input type="hidden" name="limitstart" value="0">
    </div>

【问题讨论】:

    标签: c# html-agility-pack


    【解决方案1】:

    要具体获取href 值,您可以执行以下操作:

    var links = document.DocumentNode
        .Descendants("div") // 1
        .Where(div => div.HasClass("pagination")) // 2
        .First() // 3
        .Descendants("a") // 4
        .Select(a => a.GetAttributeValue("href", "")) // 5
        .Where(link => !string.IsNullOrWhiteSpace(link)) // 6
        .ToList();
    
    1. 获取所有后代divs。这包括孩子孩子的孩子
    2. 只保留具有pagination 类的div
    3. 选择第一个符合我们条件的div
    4. 再次获取所有后代,但这次是as
    5. 获取as href值的值
    6. 过滤掉具有空值的链接(如提交的 HTML 中的第一个链接

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      相关资源
      最近更新 更多