2014-09-20 2 views
0

Я начал программировать в Visual Basic, и мне нужна помощь. Это может быть простой вопрос, но я не могу понять это.Получить HTML-элемент без цикла «Для каждого»

Итак, я создал веб-браузер, и я хотел бы получить изображение профиля человека на Facebook и отобразить его на Picture Box, а также имя этого человека и отобразить его в TextBox. После этого программа должна сохранить изображение в папке на моем жестком диске.

Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted 

Dim elemCollection As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("img") 
    Dim fbPath As String = "C:\Users\" + Environment.UserName.ToString + "\Documents\FB Images\" 


    For Each curElement As HtmlElement In elemCollection 

     If curElement.OuterHtml.Contains("profilePic img") Then 
      PictureBox1.ImageLocation = curElement.GetAttribute("src") 'Showing the profile pic in picture box 
      TextBoxName.Text = curElement.GetAttribute("alt") 'Showing the name in a textbox 
      Dim NumberOfFiles As Integer = System.IO.Directory.GetFiles(fbPath).Length 
      Dim bmp As New Bitmap(PictureBox1.Width, PictureBox1.Height) 
      PictureBox1.DrawToBitmap(bmp, PictureBox1.ClientRectangle) 
      bmp.Save(System.IO.Path.Combine(fbPath, CStr(NumberOfFiles) + TextBoxName.Text + ".jpg"), System.Drawing.Imaging.ImageFormat.Jpeg) 
     End If 

    Next 
End Sub 

Так что программа должна сохранить изображение с именем файла в соответствии с количеством файлов есть в пути к папке (например «1 George Johnson.jpg»). Но что происходит, он сохраняет 5 разных изображений, потому что я думаю, что есть несколько HTML-элементов, которые соответствуют этим атрибутам, поэтому цикл For Each приносит больше результатов.

Есть ли способ получить элемент HTML без использования этого цикла и просто получить определенный элемент, который я хочу?

+0

добавьте более конкретные критерии в ваш проверочный оператор 'If', чтобы он оценивал значение' True' только для определенного элемента, который вы хотите – har07

ответ

0

Если вы хотите, чтобы первый раз, когда инструкция для атрибута истинна, добавьте «Exit For» в строку до End If.

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