2013-10-19 93 views
1

我想使用此代碼,但它在所有此參數中返回NULL!你能否幫助解決這個問題或者是什麼問題?在HtmlAgilityPack中返回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']"); 

      } 
     } 
+0

@KrzysiekBronek感謝您的幫助,但它仍然無法正常工作。如果它可能幫助我更多地瞭解這個項目,並且如果您認爲您需要整個項目,我可以在這裏發佈所有項目。 – mohammad

回答

0

男人,看來你在你的XPath選擇一個錯字,請參閱:

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

在這裏,您使用//a[@class='metatag-topi metatag-keywords']表達與class屬性選擇所有<a>標籤值metatag-topi metatag-keywords。但問題是,您嘗試應用表達式的頁面不包含這些元素,但有一些<a class="metatag-topic metatag-keywords">(在文字topic的末尾缺少c字母)。

只需更改該行:

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

,它應該工作。

0

如果未找到任何節點的DocumentNode.SelectNodes可以返回null。

您可以檢查此相關Why DocumentNode.SelectNodes returns null

+0

@KrzysiekBronek感謝您的幫助,但它仍然無法正常工作。如果它可能幫助我更多地瞭解這個項目,並且如果您認爲您需要整個項目,我可以在這裏發佈所有項目。 – mohammad

相關問題