Laden...

Webseite speichern mit webview2 ?

Erstellt von joe@vstw vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.065 Views
J
joe@vstw Themenstarter:in
9 Beiträge seit 2020
vor 3 Jahren
Webseite speichern mit webview2 ?

Hallo Gemeinde,

in einer größeren C# Anwendung lasse ich per Browserframe Daten einer externen Webseite (keiner eigenen) anzeigen. Nach einem Relaunch werden dort Grafiken als Inline-SVG verwendet, die mit dem bisherigen Webview-Modul nicht dargestellt werden.

Daraufhin habe ich

  • die neueste Edge-Version installiert, Version 86.0.590.0 (Offizielles Build) canary (64-Bit)
  • bin auf Microsoft Visual Studio Community 2019 Version 16.6.5 umgestiegen,
  • auf .NET Framework 4.8.03752 upgegradet (verwende aber 4.7.2) und
  • über NuGet Webview2 Version 0.579-preview dem Projekt hinzugefügt.

Nach Austausch von Webview gegen Webview2 wird die Seite auch korrekt dargestellt und ist in allen Optionen funktionsfähig (Anwahl einzelner Tabs etc.). Ebenfalls lässt sich die HTML-Source der Seite über das Kontextmenü des Browsers inclusive der Inline-SVGs komplett abspeichern. Dazu ist aber der manuelle Eingriff nötig.

Mit allen bisher üblichen Methoden bekomme ich die Seite programmgesteuert nur ohne die <svg ...> ... </svg> Elemente abgespeichert, also zB mit [etwas vereinfacht]


Byte[] x;
WebClient client = new WebClient();
x = client.DownloadData(webaddress);
System.IO.File.WriteAllBytes("C:\\temp\\svg.html", x);

Gibt es eine Möglichkeit, über Webview2 die geladene Seite abzuspeichern? Ich habe da nichts gefunden. Tutorials und API von MS sind da sehr mager.

Gruß Josef

5.657 Beiträge seit 2006
vor 3 Jahren

Wahrscheinlich werden die SVGs dynamisch gerendert. Dann sind die nicht im Seitenquelltext zu finden.

Weeks of programming can save you hours of planning

J
joe@vstw Themenstarter:in
9 Beiträge seit 2020
vor 3 Jahren

Hi MrSparkle,

>dynamisch gerendert...

ja so wie ich das jetzt analysiert habe, sind da irgendwelche scripts mit "preload" drin, so dass sie Vermutung berechtigt ist, dass die svgs erst beim Laden dazukommen. Sowohl die svgs als auch die Skripte fehlen in der direkt geladenen Version des HTML. Die ist z.B. statt über 360 nur 15 kB groß.

Aber gibt es keine Möglichkeit, bei webview2 die geladene Seite als HTML zu speichern, außer manuell über das Kontextmenü? Sowas sie webBrowser2.DocumentText ?

Gruß Josef

5.657 Beiträge seit 2006
vor 3 Jahren

Aber gibt es keine Möglichkeit, bei webview2 die geladene Seite als HTML zu speichern, außer manuell über das Kontextmenü? Sowas sie webBrowser2.DocumentText ?

Dazu gibt es doch die Dokumentation, wenn du dort keine passende Eigenschaft oder Methode findest, wird es die wohl nicht geben.

Weeks of programming can save you hours of planning