【问题标题】:Http Agility Pack - Accessing Siblings?Http Agility Pack - 访问兄弟姐妹?
【发布时间】:2011-05-01 05:07:15
【问题描述】:

使用 HTML Agility Pack 非常适合获取后代和整个表等...但是在以下情况下如何使用它

...Html Code above...

<dl>
<dt>Location:</dt>
<dd>City, London</dd>
<dt style="padding-bottom:10px;">Distance:</dt>
<dd style="padding-bottom:10px;">0 miles</dd>
<dt>Date Issued:</dt>
<dd>26/10/2010</dd>
<dt>type:</dt>
<dd>cement</dd>
</dl>

...HTML Code below....

你怎么能找到如果在这种情况下英里小于 15,我不明白你可以对元素做一些事情,但是你必须让所有元素找到正确的元素,然后找到数字来检查它的值吗?或者有没有办法将正则表达式与敏捷包一起使用来以更好的方式实现这一点......

【问题讨论】:

    标签: .net html html-agility-pack html-content-extraction scrape


    【解决方案1】:

    只获取 html 同级

    public static List<HtmlNode> GetHtmlNodeList(string html)
    {
            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(html);
            var regs = doc.DocumentNode.SelectSingleNode("//div");
            var first = regs.Descendants().FirstOrDefault();
            var second = first.NextSibling;
            List<HtmlNode> list = new List<HtmlNode>();
            while (second != null)
            {
                list.Add(second);
                second = CheckSibling(second);
            }
            return list;
    }
    
    private static HtmlNode CheckSibling(HtmlNode node)
    {
            node = node.NextSibling;
            return node;          
    }
    

    【讨论】:

      【解决方案2】:

      我很确定(尚未检查)它支持 following-sibling:: 轴,因此您可以要么找到节点 "dt[.='Distance:']",然后找到 node.SelectSingleNode("following-sibling::dd[1]") - 或(更简单) 如果您确定 dd 始终紧跟在 dt 之后,请使用 node.NextSibling

      例如:

      string distance = doc.DocumentNode.SelectSingleNode(
                "//dt[.='Distance:']/following-sibling::dd").InnerText;
      

      【讨论】:

        猜你喜欢
        • 2019-08-04
        • 1970-01-01
        • 2019-05-06
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-29
        相关资源
        最近更新 更多