2016-06-21 6 views
1

を実行に失敗:getElementsByTagNameのは、このコードは、次のエラーで実行に失敗し

An unhandled exception of type 'System.NullReferenceException' occurred in Miner_W.exe

Additional information: Object reference not set to an instance of an object.

public void obturl() 
    { 
     string url="http://www.google.com"; 
     WebBrowser wb = new WebBrowser(); 
     wb.Navigate (new Uri (url)); 
     HtmlElementCollection elementcolls = wb.Document.GetElementsByTagName("img"); 
     foreach (HtmlElement elementcoll in elementcolls) 
     { 
      listBox1.Items.Add(elementcoll.GetAttribute("scr")); 
     } 
     /*string result = elementcoll[i].GetAttribute("src");*/ 
    } 

答えて

1

ページが読み込まれるまで待つ必要があります。

string url = "http://www.google.com"; 
WebBrowser wb = new WebBrowser(); 
wb.Navigate(new Uri(url)); 

wb.DocumentCompleted += (s, e) => 
{ 
    HtmlElementCollection elementcolls = wb.Document.GetElementsByTagName("img"); 
    foreach (HtmlElement elementcoll in elementcolls) 
    { 
     listBox1.Items.Add(elementcoll.GetAttribute("src")); 
    } 
}; 
+0

恐ろしい!できます。あなたは、 "wb.DocumentCompleted + =(s、e)=>" – Megaman

+0

@Thomasshi - '+ =' - [subscribe]というステートメントの "+、=> //msdn.microsoft.com/en-us/library/ms366768.aspx)をイベントに追加します。 '=>' - '(https://msdn.microsoft.com/en-us/library/bb311046.aspx)。 –

1

何SCR属性はありません。私はあなたのGetAttributeメソッドに "src"を入れることを意味すると思います。

各要素に対して、要素に存在しない属性を取得しようとすると、例外が発生します。

+0

助けミッケルのおかげで、このステップ "HtmlElementCollection elementcolls = wb.Document.GetElementsByTagName(" IMG ")でコードブレーク;" – Megaman

+0

うーん...タグを取得する前に、ページにそのタグを持つ要素があるかどうかを確認する方法はありますか?そうですね、試してみる価値があります – Mikkel

+0

はい、手動でGOOGLEのホームページに移動してソースコードを見ると、 "Google" – Megaman

関連する問題