【问题标题】:Getting an element using HtmlAgilityPack使用 HtmlAgilityPack 获取元素
【发布时间】:2012-04-16 11:48:27
【问题描述】:

我想从我的 html 文档中获取一个没有 id 或名称但有唯一样式标签的 div。

这是我尝试过的:

        foreach (HtmlNode node in myDocument.DocumentNode.DescendantNodes())
        {
            if (node.OuterHtml.Contains("div"))
            {
                HtmlAttribute att = node.Attributes["style"];

                if (att != null)
                {

                    if (att.ToString() == "font-size:16px;padding:4px 8px 0")
                    {
                        targetDiv = node;
                    }
                }
            }
           }

首先我得到了文档中的所有节点,然后我尝试使用以下方法仅过滤掉 div:

if (node.OuterHtml.Contains("div"))

但是,这实际上并没有过滤掉 div,而是选择其中包含 div 的任何标签。这样做的正确方法是什么?

【问题讨论】:

    标签: c# winforms html-agility-pack


    【解决方案1】:

    试试 XPath:

    var nodes = myDocument.DocumentNode.SelectNodes("//div[@style='font-size:16px;padding:4px 8px 0']")
    

    【讨论】:

    • 我使用了myDocument.DocumentNode.Descendants("div"),但这也可以。
    【解决方案2】:

    而不是

    if (node.OuterHtml.Contains("div"))
    

    尝试使用Name 属性:

    if (node.Name == "div")
    

    我对 HtmlAgilityPack 不熟悉,但是在阅读了一下之后,您可能会发现 this site 很有帮助。

    【讨论】:

    • 是的,我认为Name 实际上是指名称属性而不是标签。最后我使用了myDocument.DocumentNode.Descendants("div"),它成功了。
    猜你喜欢
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    相关资源
    最近更新 更多