Webseite speichern unter....

  • VB.NET

    Webseite speichern unter....

    Hallo,

    der Internet Explorer bietet die Möglichkeit die angezeigte Webseite (inkl. aller angezeigten Bilddateien) zu speichern. Gibt es eine Möglichkeit das ebenfalls mit dem Webbrowser Steuerelement zu realisieren? Eine Möglichkeit wäre über die "src" Werte der image Elemente die Bilder zu laden. Jedoch funktioniert das nicht bei dynamischen Bildern ("ashx").

    Kann mir da wer helfen, so dass die gerade angezeigte Seite gespeichert wird?

    Gruß
    Dirk
    Filter mit Regex alle Bildurls, stylesheets, u.w.s. raus und lad diese in einen seperaten Ordner runter. Dazu müsstest du dann noch die einzelnen Pfade zu den Dateien ändern (im HTML-Code)
    Auch das geht nicht, da es dynamische Bilder sind. D.h. dass jedesmal wenn ich die Bildurl aufrufe ein anderes Bild dargestellt wird. Ich benötige jedoch das im Webbrowser-Steuerelement angezeigte Bild.

    Ich habe nun etwas gefunden was wohl genau das macht was ich möchte. Jedoch versteh ich den Code nicht und er funktioniert auch nicht fehlerfrei. Ich hab ein paar Kommentare dahintergeschrieben. Wäre super wenn das jemand mit mir durchgeht.
    Wichtig für den Code ist es einen Verweis auf mshtml hinzuzufügen.


    VB.NET-Quellcode

    1. Dim objDoc As mshtml.HTMLDocument
    2. objDoc = DirectCast(WebB.Document, mshtml.HTMLDocument) 'es muss wohl heißen: WebB.Document.DomDocument
    3. Dim body2 As mshtml.IHTMLElement2 = DirectCast(objDoc.body, mshtml.IHTMLElement2)
    4. Dim controlRange As mshtml.IHTMLControlRange = DirectCast(body2.createControlRange(), mshtml.IHTMLControlRange)
    5. Dim objElCol As mshtml.IHTMLElementCollection
    6. objElCol = objDoc.getElementsByTagName("img")
    7. For Each objImg As mshtml.HTMLImg In objElCol
    8. controlRange.add(DirectCast(objImg, mshtml.IHTMLControlElement))
    9. controlRange.[select]()
    10. controlRange.execCommand("Copy", True, System.Reflection.Missing.Value) 'Hier wird auch was in die Zwischenablage kopiert, aber das ist wohl kein Bild
    11. Me.Invoke(New getClipImageDelegate(AddressOf getClipImage), New Object() {}) 'keine Ahnung was das hier soll
    12. Dim image As System.Drawing.Image = img 'woher kommt img ?
    13. image.Save("filename.jpg")
    14. Return "filename" 'wirft auch nen Fehler wobei die Zeile wohl auch nicht wirklich notwendig ist.
    15. Next

    Edit by Manschula: Es gibt eine Bearbeiten-Funktion! --> Beiträge zusammengeführt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manschula“ ()