2013-07-17 3 views
0

Я пытаюсь создать загрузчик изображений. В принципе, он должен пройти через веб-сайт и загрузить все изображения. Ошибка, которую я получаю, находится в первой строке цикла foreach, System.NullReferenceException.Загрузка изображения null Исключение ссылки

private void button1_Click(object sender, EventArgs e) 
{ 
    WebBrowser browser = new WebBrowser(); 
    browser.DocumentCompleted += browser_DocumentCompleted; 
    browser.Navigate("http://www.mysite.com"); 
} 

void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    WebBrowser browser = sender as WebBrowser; 
    HtmlElementCollection imgCollection = browser.Document.GetElementsByTagName("img"); 
    WebClient webClient = new WebClient(); 
    foreach (HtmlElement img in imgCollection) 
    { 
     string url = img.FirstChild.GetAttribute("src"); 
     webClient.DownloadFile(url, url.Substring(url.LastIndexOf('/'))); 
    } 
} 
+3

Используйте отладчик, чтобы узнать, что равно null. – SLaks

ответ

3

изменить это:

img.FirstChild.GetAttribute("src"); 

к тому, что:

img.GetAttribute("src"); 
+0

Теперь, после исправления ошибки, я получаю эту ошибку '' System.Net.WebException'' следующей строки 'webClient.DownloadFile (url, url.Substring (url.LastIndexOf ('/'))); ' – FJam

+0

хорошо, что хранится в URL-адресе? –

+0

позволяет говорить, что я помещаю google.com в качестве URL-адреса, он должен загрузить изображение на домашней странице – FJam

0

изменить это

string url = img.FirstChild.GetAttribute("src"); 

в

string url = img.GetAttribute("src"); 

as img не имеет детей.

Смежные вопросы