在HtmlAgilityPack中返回null

c# html-agility-pack

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

点击这里查看显示发生了什么的图片。

代码:

    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']");

            }
        }

一般承认的答案

伙计,你的xpath选择器中似乎有拼写错误,请参阅:

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

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

只需将该行更改为:

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

它应该工作。


热门答案

如果未找到节点,则DocumentNode.SelectNodes可以返回null。

您可以检查这相关的为什么DocumentNode.SelectNodes返回null



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因