Rubrik: HTML/Internet/Netzwerk · HTML/Email | VB-Versionen: VB4, VB5, VB6 | 14.07.01 |
HTML-Quelltext einer Webseite auslesen In Verbindung mit dem WebBrowser-Control lässt der Seitenquelltext ganz leicht auslesen. | ||
Autor: Dieter Otter | Bewertung: | Views: 120.135 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
"Wie kann man den Seitenquelltext einer Webseite auslesen, um z.B. gezielt nach bestimmten Link-Verweisen, Bildern oder auch Mail-Adressen zu suchen?"
Ganz einfach:
Man nehme das WebBrowser-Steuerelement (Menü Projekte - Komponenten - Microsoft Internet Controls bzw. SHDOCVW.DLL) und plaziere es auf eine Form. Über die Navigate-Eigenschaft legt man die URL der Webseite fest. Das DocumentComplete-Ereignis informiert uns dann, sobald die Webseite vollständig geladen ist. Der Seitenquelltext lässt sich daraufhin über das .Document-Objekt ganz leicht auslesen:
Dim Quelltext As String Quelltext = WebBrowser1.Document.documentElement.outerHTML
Und nun das ganze schön verpackt:
Option Explicit ' Ereignis wird ausgelöst, sobald die Webseite ' vollständig geladen wurde Private Sub WebBrowser1_DocumentComplete(ByVal pDisp _ As Object, URL As Variant) On Error Resume Next WebBrowser1.Tag = "" End Sub ' URL (Webseite) laden Private Sub URL_Load(ByVal sURL As String) Dim sQuelltext As String With WebBrowser1 .Tag = "Load" .Navigate sURL ' Warten bis Seite vollständig geladen ist While .Tag <> "" DoEvents Wend End With End Sub ' Bsp.: Seitenquelltext in Datei speichern Private Sub SaveQuelltext(ByVal sFilename As String) Dim F As Integer With WebBrowser1.Document.documentElement F = FreeFile Open sFilename For Output As #F Print #F, .outerHTML; Close #F End With End Sub ' Bsp.: alle EMail-Adressen ermitteln ' Rückgabewert: Array (0..n) mit den gefundenen ' EMail-Adressen Private Function GetMailAdresses() As Variant Dim sMailAdr() As Variant Dim sPos As Long Dim ePos As Long Dim nCount As Integer nCount = 0 With WebBrowser1.Document.documentElement Do ' nach 'href="mailto:' suchen sPos = InStr(sPos + 1, .outerHTML, "href=""mailto:", _ vbTextCompare) If sPos > 0 Then ' Schlusszeichen suchen (") ePos = InStr(sPos + 7, .outerHTML, Chr$(34)) If ePos > 0 Then ' Array um ein Feld erweitern ReDim Preserve sMailAdr(nCount) sMailAdr(nCount) = Mid$(.outerHTML, _ sPos + 13, ePos - sPos - 13) nCount = nCount + 1 End If Else sPos = 0 End If Loop Until sPos = 0 End With GetMailAdresses = sMailAdr End Function
Beispiel
Plazieren Sie zusätzlich zu dem WebBrowser-Steuerelement noch drei CommandButtons auf die Form und benennen Sie diese cmdLoad, cmdSave und cmdEMail. Weiterhin wird noch ein Textfeld Text1 benötigt, für das Sie die MultiLine-Eigenschaft auf "True" setzen.
Über den Button cmdLoad soll eine Webseite geladen werden. Klickt man nun auf cmdSave, so soll der Seitenquelltext in eine Datei gespeichert werden. Über den Button cmdEMail werden alle auf der Webseite genannten EMail-Adressen ausfindig gemacht und in der Textbox angezeigt.
Und hier der Code:
' Webseite laden Private Sub cmdLoad_Click() URL_Load "Irgendeine URL" End Sub ' Seitenquelltext speichern Private Sub cmdSave_Click() SaveQuelltext App.Path & "\URL_Quelltext.txt" End Sub ' alle vorhanden EMail-Adressen anzeigen Private Sub cmdEMail_Click() Dim I As Integer Dim sMailAdr() As Variant sMailAdr = GetMailAdresses() Text1.Text = "" For I = 0 To Ubound(sMailAdr) Text1.Text = Text1.Text & sMailAdr(I) & vbCrLf Next I End Sub
Es gibt natürlich noch zahlreiche weitere Beispiele, die zeigen, was man alles über den Seitenquelltext einer Webseite ermitteln kann. Vorrangig sollte unser heutiger Tipp aber zeigen, wie man überhaupt an den Seitenquelltext einer Webseite gelangt.