【问题标题】:Return null in HtmlAgilityPack在 HtmlAgilityPack 中返回 null
【发布时间】:2013-10-19 12:58:48
【问题描述】:

我想使用这段代码,但它在所有这些参数中都返回 NULL !请您帮忙解决一下或者是什么问题?

click here 获取显示所发生情况的图片。

代码:

    HtmlWeb hw = new HtmlWeb();

    private void button1_Click(object sender, EventArgs e)
        {
            Crawler("http://www.avval.ir/directory", 0);
        }

    public void Crawler(string url, int pid)
        {


            try
            {

                HtmlAgilityPack.HtmlDocument doc = hw.Load("http://www.avval.ir/directory");
                HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a[@class='metatag-topi metatag-keywords']");
                HtmlNodeCollection nodes2 = doc.DocumentNode.SelectNodes("//div[@class='pagination']/a[@href]");
                HtmlNodeCollection phone = doc.DocumentNode.SelectNodes("//p[@class='phone fRight ml10']");

            }
        }

【问题讨论】:

  • @KrzysiekBronek 感谢您的帮助,但它仍然不起作用。如果它可能在这个项目上帮助我更多,如果你认为你需要整个项目,我可以在这里发布所有这些。

标签: c# html-agility-pack


【解决方案1】:

伙计,您的 xpath 选择器中似乎有错字,请参阅:

HtmlNodeCollection nodes = 
    doc.DocumentNode.SelectNodes("//a[@class='metatag-topi metatag-keywords']");

在这里您使用//a[@class='metatag-topi metatag-keywords'] 表达式选择所有<a> 标记与class 属性值metatag-topi metatag-keywords。但问题是,您尝试应用表达式的页面不包含此类元素,但有一些 <a class="metatag-topic metatag-keywords">(在单词 topic 的末尾缺少 c 字母)。

只需将该行更改为:

HtmlNodeCollection nodes = 
    doc.DocumentNode.SelectNodes("//a[@class='metatag-topic metatag-keywords']");

它应该可以工作。

【讨论】:

    【解决方案2】:

    如果没有找到节点,DocumentNode.SelectNodes 可能会返回 null。

    你可以查看这个相关的Why DocumentNode.SelectNodes returns null

    【讨论】:

    • @KrzysiekBronek 感谢您的帮助,但它仍然不起作用。如果它可能在这个项目上帮助我更多,如果你认为你需要整个项目,我可以在这里发布所有这些。
    猜你喜欢
    • 2014-05-30
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    相关资源
    最近更新 更多