2016-06-21 2 views
1

Ce code ne tourne pas avec l'erreur suivante:GetElementsByTagName ne parvient pas à exécuter

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");*/ 
    } 

Répondre

1

Vous devez attendre que la page soit chargée.

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

Génial! Ça marche. BTW, pourriez-vous me dire quelle est la fonction du symbole "+, =>" dans l'instruction "wb.DocumentCompleted + = (s, e) =>" – Megaman

+0

@Thomasshi - '+ =' - [subscribe] (https: //msdn.microsoft.com/en-us/library/ms366768.aspx) à l'événement. '=>' - [lambda] (https://msdn.microsoft.com/fr-fr/library/bb311046.aspx). –

1

Il n'y a pas attribut scr. Je pense que vous vouliez mettre "src" pour votre méthode GetAttribute.

Une exception se produit car pour chaque élément, vous essayez d'obtenir un attribut qui n'existe pas sur les éléments.

+0

Merci pour l'aide Mikkel, mais la pause de code à cette étape "HtmlElementCollection elementcolls = wb.Document.GetElementsByTagName (" img ");" – Megaman

+0

Hmm ... Y at-il un moyen de vérifier si la page a des éléments avec cette balise, avant de les obtenir? Si oui, cela pourrait valoir la peine d'essayer – Mikkel

+0

Oui, je vais manuellement à la page d'accueil de GOOGLE et voir le code source et il y a "Google" – Megaman