Поэтому у меня есть пакет гибкости HTML.
Я пытаюсь прочитать веб-страницу html. Мне нужно содержимое ярлыка, но я не уверен, как его получить.
Я знаю, что это за атрибут ... но я не знаю, как использовать его для получения innerhtml метки.
Может кто-нибудь помочь
Private Sub SetTextboxText(ByVal Text As String)
DirectCast(GetCurrentWebForm.item("frmLogin:strCustomerLogin_userID"), mshtml.HTMLInputElement).value = ""
DirectCast(GetCurrentWebForm.item("frmLogin:strCustomerLogin_pwd"), mshtml.HTMLInputElement).value = ""
ClickNormalButton()
Memorable_Reader()
End Sub
'Gets and Sets Memorable Information
Private Sub Memorable_Reader()
'Read Label 'For' Attribute
'Display Innerhtml Text in msgbox
End Sub
'CLICKS THE SUBMIT BUTTON
Private Sub ClickNormalButton()
GetCurrentWebForm.submit()
End Sub
Обновить:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
WebBrowser1.Navigate("https://online.lloydsbank.co.uk/personal/logon/login.jsp?WT.ac=PLO0512")
Dim htmlDoc As New HtmlAgilityPack.HtmlDocument
htmlDoc.LoadHtml(WebBrowser1.DocumentText)
Dim labelElement = htmlDoc.DocumentNode.SelectSingleNode("//label[@for='frmLogin:strCustomerLogin_userID']")
Dim labelText = ""
If labelElement IsNot Nothing Then
labelText = labelElement.InnerText
End If
MsgBox(labelText) <---- Comes out with nothing aka ""
MsgBox(labelElement.InnerText) <---- same as above
End Sub
Сначала рассмотрим этот простой пример:
Dim htmlString = "<form><label for='something'>text text</label></form>"
Dim htmlDoc As New HtmlAgilityPack.HtmlDocument
Dim labelElement = htmlDoc.DocumentNode.SelectSingleNode("//label[@for='something']")
Dim labelText = ""
If labelElement IsNot Nothing Then
labelText = labelElement.InnerText
End If
теперь переменная labelText
содержит text text
И вот пример загрузки html из данной ссылки с помощью WebClient
Dim htmlDoc As New HtmlAgilityPack.HtmlDocument
Dim webClinet As New System.Net.WebClient
Dim html As String = ""
'add your web page link here
html = webClinet.DownloadString("http://yourlink.com/")
htmlDoc.LoadHtml(html)
'and here add your for attribute value for that label instead of something
Dim labelElement =htmlDoc.DocumentNode.SelectSingleNode("//label[@for='something']")
Dim labelText = ""
If labelElement IsNot Nothing Then
labelText = labelElement.InnerText
End If
Обновление : поскольку вы сказали, что он уже открыт в элементе управления WebBrowser
используйте свойство DocumentText
чтобы получить текст html следующим образом:
Dim htmlDoc As New HtmlAgilityPack.HtmlDocument
htmlDoc.LoadHtml(webBrowser1.DocumentText)
Dim labelElement =htmlDoc.DocumentNode.SelectSingleNode("//label[@for='something']")
Dim labelText = ""
If labelElement IsNot Nothing Then
labelText = labelElement.InnerText
End If
** Обновление: ** Пример того, как получить строку Html из элемента управления WebBrowser
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
WebBrowser1.Navigate("https://www.google.com")
End Sub
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
MessageBox.Show(WebBrowser1.DocumentText)
End Sub
End Class