Http敏捷包 - 访问兄弟姐妹?

时间:2010-10-27 09:38:42

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

使用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,我就会发现你可以用元素做一些事情,但是你必须让所有元素找到正确的元素然后找到这个数字才能检查它的值吗?或者是否有办法使用正则表达式与Agility包以更好的方式实现这一目标...

2 个答案:

答案 0 :(得分:3)

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

例如:

dt

答案 1 :(得分:0)

Get just html simblings



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;          
    }