在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合法嗎? 是的,了解原因