Я начал программировать в 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 без использования этого цикла и просто получить определенный элемент, который я хочу?
добавьте более конкретные критерии в ваш проверочный оператор 'If', чтобы он оценивал значение' True' только для определенного элемента, который вы хотите – har07