2016-06-21 2 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

굉장! 그것은 작동합니다. BTW, "wb.DocumentCompleted + = (s, e) =>" – Megaman

+0

@Thomasshi -'+ ='- [subscribe] 문에 "+, =>"기호의 기능이 무엇인지 말해 주시겠습니까? https : //msdn.microsoft.com/en-us/library/ms366768.aspx)를 이벤트로 보냅니다. '=>'- λ (https://msdn.microsoft.com/en-us/library/bb311046.aspx). –

1

에는 SCR 속성이 없습니다. 나는 당신이 GetAttribute 메소드에 "src"를 넣으려고했다고 생각한다.

각 요소에 대해 요소에없는 특성을 얻으려고하면 예외가 발생합니다.

+0

도움 Mikkel 주셔서 감사합니다,하지만이 단계 "HtmlElementCollection elementcolls = wb.Document.GetElementsByTagName ("IMG ")의 코드 휴식;" – Megaman

+0

흠 ... 페이지에 태그가있는 요소가 있는지 확인하는 방법이 있나요? 그렇다면 시도해 볼만한 가치가 있습니다. – Mikkel

+0

예, 수동으로 GOOGLE 홈페이지로 이동하여 소스 코드를보고 "Google" – Megaman

관련 문제