vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: HTML/Internet/Netzwerk · WebBrowser   |   VB-Versionen: VB2005, VB200822.02.10
Snapshot einer kompletten Internetseite

Ein kleines Beispiel, wie man eine komplette Intenetseite "fotografieren" und abspeichern kann.

Autor:   Mario WeichertBewertung:     [ Jetzt bewerten ]Views:  11.805 
www.pixcore.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Hier einmal ein kleines Beispiel, wie man den Inhalt einer ganzen Internetseite als Bild festhalten kann.
Auf eine visuelle Darstellung der Internetseite in einem WebBroser Control wird hier verzichtet.

Fangen wir an...
Als erstes fügen wir unserer Anwendung folgende Deklaration hinzu:

Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Windows.Forms

Als nächstes schreiben wir eine Public Function, um den Code von überall aus unserer Anwendung aufrufen zu können. Nennen wir unsere Funktion mal "Webshot":

''' <summary>
''' Erstellt einen Snapshot vom Inhalt einer beliebigen Webseite
''' </summary>
''' <param name="URL">URl der Webseite</param>
''' <returns>Bitmap-Objekt mit dem Inhalt der Webseite als Bild</returns>
Private Function WebShot(ByVal URL As String) As Bitmap
  ' Neues WebBrowser-Objekt erstellen
  Dim wb As New WebBrowser()
 
  With wb
    ' Scrollbars ausblenden
    .ScrollBarsEnabled = False
 
    ' Fehlermeldungen unterdrücken
    .ScriptErrorsSuppressed = True
 
    ' URL aufrufen
    .Navigate(URL)
 
    ' Warten, bis Seite geladen ist
    While .ReadyState <> WebBrowserReadyState.Complete
      Application.DoEvents()
    End While
 
    ' Größe des Browserfensters festlegen
    .Width = .Document.Body.ScrollRectangle.Width
    .Height = .Document.Body.ScrollRectangle.Height
 
    ' Bitmap in der festgelegten Größe erstellen
    Dim bitmap As New Bitmap(.Width, .Height)
 
    ' Inhalt des WebBroewsers als Bitmap speichern
    .DrawToBitmap(bitmap, New Rectangle(0, 0, .Width, .Height))
 
    ' Ressourcen freigeben
    .Dispose()
 
    ' Bitmap-Objekt zurückgeben
    Return (bitmap)
  End With
End Function

Die Funktion lädt die Internetseite in ein unsichtbares WebBrowser-Control, erstellt einen Snapshot und gibt das Bild dann als Bitmap-Objekt zurück.

Den Snapshot kann man dann bspw. in einem PictureBox-Control wie folgt anzeigen...

Me.Cursor = Cursors.WaitCursor
PictureBox1.Image = WebShot("http://www....")
Me.Cursor = Cursors.Default
... oder auch direkt als Bilddatei abspeichern:

Me.Cursor = Cursors.WaitCursor
With WebShot("http://www....")
  .Save("d:\temp\test.jpg", Imaging.ImageFormat.Jpeg)
End With
Me.Cursor = Cursors.Default