AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Website von EdgeBrowser in Datei speichern

Offene Frage von "Nico braucht Hilfe"
Ein Thema von Nico braucht Hilfe · begonnen am 4. Aug 2024 · letzter Beitrag vom 5. Aug 2024
 
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
459 Beiträge
 
Delphi 12 Athens
 
#4

AW: Website von EdgeBrowser in Datei speichern

  Alt 4. Aug 2024, 11:10
So mache ich das, wenn ich Webseiten mit dem EdgeBrowser (hier im Beispiel EB1) Seiten auslese. Keine Ahnung, ob das für deine Zwecke funktioniert:
Delphi-Quellcode:
  private
    { Private-Deklarationen }
    var ScriptCompleteEB1: boolean;
    var MyDoc: IHTMLDocument2;
    var MyHTML: String;
Zuerst zur Website navigieren und warten, bis die vollständig geladen ist. Ab dann:
Delphi-Quellcode:
EB1.ExecuteScript('encodeURI(document.documentElement.outerHTML)');
WaitForScriptComplete(EB1);
Und jetzt das Ergebnis auslesen:
Delphi-Quellcode:
procedure TForm6.EB1ExecuteScript(Sender: TCustomEdgeBrowser; AResult: HRESULT; const AResultObjectAsJson: string);
var v: Variant;
begin
if AResultObjectAsJson = 'nullthen Exit;
MyHTML:=TNetEncoding.URL.Decode(AResultObjectAsJson).DeQuotedString('"');
MyDoc:=CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
MyDoc.designMode:='on';
while MyDoc.readyState <> 'completedo Application.ProcessMessages;
v:=VarArrayCreate([0, 0], VarVariant);
v[0]:=MyHTML;
MyDoc.Write(PSafeArray(System.TVarData(v).VArray));
MyDoc.designMode := 'off';
while MyDoc.readyState <> 'completedo Application.ProcessMessages;
ScriptCompleteEB1:=true;
end;
Jetzt warten, bis das Skript ausgeführt ist
Delphi-Quellcode:
procedure TForm6.WaitForScriptComplete(EB: TEdgeBrowser);
var TimeOutAt: Cardinal;
begin
ScriptCompleteEB1:=false;
TimeOutAt:=GetTickCount+15000; {15 Sekunden}
while (ScriptCompleteEB1=false) and (GetTickCount<TimeOutAt) do
 begin Sleep(100); Application.ProcessMessages; end;
if (ScriptCompleteEB1)
then Wait(500)
else raise Exception.Create('TimeOut in WaitForScriptComplete abgelaufen');
end;

So, und jetzt dürft ihr alle meinen Code zerreißen Mir egal, er funktioniert perfekt für meine firmeninternen Zwecke.

Geändert von Papaschlumpf73 ( 4. Aug 2024 um 11:16 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz