2014-10-27 55 views
-1

我嘗試使用HtmlAgilityPack來獲取標籤div的值,但是我的結果始終爲空。我不知道爲什麼它沒有價值。SelectNode總是在Html敏捷包中爲空

驗證碼:

HtmlWeb website = new HtmlWeb(); 
HtmlAgilityPack.HtmlDocument rootDocument = website.Load("http://blogviet.com.vn"); 
var value= rootDocument.DocumentNode.SelectNodes("//div"); 
if (value!= null) 
{ 
    foreach (var tag in value) 
    { 
     if (tag.Attributes["class"] != null) 
     { 
      label2.Text += tag.Attributes["class"].Value + "\n"; 
     } 
    } 
} 
else 
{ 
    label2.Text = "null"; 
} 
+0

你的代碼工作...嘗試一個友好的URL ...看看blogviet.com.vn robots文件... HTTP:/ /blogviet.com.vn/robots.txt ...他們不希望任何人看着他們的網站。有一個小提琴... https://dotnetfiddle.net/x2uCd1你可能最有可能使用代理和假的用戶代理等,以試圖繞過這一點,但它不好... ...他們可能會禁止您的IP地址一旦檢測到它。 – 2014-10-27 09:16:15

+0

你能說我如何創建一個代理並僞造用戶代理嗎? – toan 2014-11-06 03:41:06

+0

谷歌是你的朋友... http://stackoverflow.com/questions/12099538/using-a-proxy-with-htmlagilitypack – 2014-11-06 09:07:25

回答

0

嘗試Descendants

var divNodes = rootDocument.DocumentNode.Descendants("div"); 
var classNames = divNodes.Select(d => d.GetAttributeValue("class","").Where(x => x != ""); 
label2.Text = string.Join(Environment.NewLine, classNames); 
+0

我嘗試後代,但結果爲空。我的代碼適用於不同的網站,它可以獲得價值。我認爲網站http://blogviet.com.vn,它喋喋不休HtmlAgilityPack – toan 2014-10-27 08:46:43

+0

@toan是您的網站正確加載?你有沒有通過調試器檢查? – 2014-10-27 08:47:27

+0

測試你的代碼。我嘗試並導致null。它不僅不會得到標籤div,還會得到身體或元。它不會導致。 – toan 2014-10-27 09:02:13