HTML-Agility-Pack的DocumentNode.SelectNodes无法找到特定节点

时间:2012-07-18 18:46:08

标签: c# xpath html-agility-pack

我正在使用HTML-Agility-Pack从Mcafee Threat Intelligence lab中抓取有关域和IP的数据,但无论我向DocumentNode.SelectNodes提供什么XPATH,它都找不到我要查找的节点(图片为威胁级别)。它可以找到其他节点和图像,但据我所知,这不是这个特定的节点和图像。具体的img在此页面上的ID为“ctl00_mainContent_imgRisk”:www.mcafee.com/threat-intelligence/domain/default.aspx?domain = facebook.com(以facebook.com为例)。这是我正在使用的代码:

        string XPATH = "foo"
        string url = "http://www.mcafee.com/threat-intelligence/ip/default.aspx?";
        if (y == true)
            url = url + "ip=" + ipaddress;
        if (y == false)
            url = url + "domain=" + domainname;
        HttpWebRequest mcafeeReq = (HttpWebRequest)WebRequest.Create(url);
        mcafeeReq.UserAgent = @"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5";
        HtmlDocument mcafeeWeb = new HtmlDocument();
        HttpWebResponse resp = (HttpWebResponse)mcafeeReq.GetResponse();
        var resultStream = resp.GetResponseStream();
        mcafeeWeb.Load(resultStream);
        HtmlNodeCollection nodes = mcafeeWeb.DocumentNode.SelectNodes(XPATH);
        try
        {
            foreach (HtmlNode node in nodes)
            {
                try
                {
                    HtmlAttribute att = node.Attributes["title"];
                    Console.WriteLine(att.Value);
                }
                catch
                {
                    Console.WriteLine("No Value Found");
                }
            }
        }
        catch
        {
            Console.WriteLine("No Nodes Found.");
        }

我为XPATH尝试了许多不同的值来找到包含

的img

“// img [@ id ='ctl00_mainContent_imgRisk']”,不返回任何节点

“// img”,返回一些img但不是正确的

完整的XPATH到img“/ html / body [@id ='ctl00_MasterBody'] / div [@ class ='wrapper'] / div [@ class ='page'] / div [@class ='container pageContainer'] / div [@ class ='pageMiddle'] / div [@ class ='pageTopGradient'] / div [@ class ='pageBottomGradient'] / div [@ class ='canvas pageContent pageBannerBolster'] / div [@class ='row pageBanner pageBannerTeal'] / div [@ class ='area primaryContent'] / div [@ class ='bannerContent bannerContentImage'] / img [@ id ='ctl00_mainContent_imgRisk']“,不返回任何节点。

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

你的XPath是

//img[@id='ctl00_mainContent_imgRisk']

所有其余的都是多余的。

不要使用由工具生成的XPath。自己制作XPath。