![]() |
Auslesen von Quelltext nach Scriptlauf mit EdgeBrowser
Hallo Gemeinde,
Ich bin dabei Daten von einem Webseite zu holen. Hierbei bin ich aber auf ein Problem gestoßen, welches ich nicht in den Griff bekomme. Zu meinem vorgehen. Ich verwende TEdgeBrowser um mir den Quelltext der betreffenden Webseite nach dem ausführen des JavaScript zu holen. Den Quelltext Speicher ich im Anschluss in eine Datei.
Delphi-Quellcode:
procedure TForm2.EdgeBrowser1NavigationCompleted(Sender: TCustomEdgeBrowser;
IsSuccess: Boolean; WebErrorStatus: TOleEnum); begin EdgeBrowser1.ExecuteScript('encodeURI(document.documentElement.outerHTML)'); end;
Delphi-Quellcode:
Das funktioniert erstmal augenscheinlich. Der Quelltext wird ordentlich in eine Datei geschrieben.
procedure TForm1.EdgeBrowser1ExecuteScript(Sender: TCustomEdgeBrowser;
AResult: HRESULT; const AResultObjectAsJson: string); var OutputSL: TStringList; begin if AResultObjectAsJson <> 'null' then begin OutputSL := TStringList.Create; try OutputSL.Text := TNetEncoding.URL.Decode(AResultObjectAsJson).DeQuotedString('"'); OutputSL.Text := HTMLEntitiesDecode(OutputSL.Text); Memo1.Text := OutputSL.Text; OutputSL.SaveToFile(ExtractFilePath(ParamStr(0)) + '\Quelltext.txt', TEncoding.UTF8); Edgebrowser1.NavigateToString(OutPutSl.Text); finally OutputSL.Free; end; end; end; Im nächsten Schritt will ich mit Python und beautifulsoup Werte auslesen. Und genau hier liegt nun mein Problem. Wenn ich nun mein Python Script über meine gespeicherte Datei laufen lasse, werden keine Werte erkannt. Bei genauerer Kontrolle des Quelltextes nach dem es durch beautifulsoup geparst wurde, entstehen haufenweise Stellen wo ">" durch ">" oder ">" durch "<" ersetzt wurden.:? Also konnte der Parser den durch den EdgeBrowser ausgegebenen Quelltext nicht richtig parsen. In der Gespeicherten Datei (Ausgegebener Quelltext durch EdgeBrowser) sind die Zeichen ">" und "<" nicht zu finden!
Code:
So öffne ich die Datei im Python.
Datei = open("Quelltext.txt", "r" , encoding='utf-8')
Nun weiß ich nicht recht wo ich ansetzen kann um zu meinem Gewünschten Ergebnis zu kommen. Zur Kontrolle hatte ich noch folgende Zeile im Delphi mit eingefügt.
Delphi-Quellcode:
Dies übergibt den Quelltext erneut an den EdgeBrowser und wird dann angezeigt.
Edgebrowser1.NavigateToString(OutPutSl.Text);
Aber auch hier wird nicht alles Richtig angezeigt. Es scheint so, als wenn genau diese Bereiche die Python nicht lesen kann, auch hier fehlen. Eventuell habt Ihr ja eine Idee wo ich noch nachschauen kann, oder was ich noch anders machen kann. Wenn Ihr mehr Informationen Braucht, dann bitte fragen. Ich wollte das Thema jetzt hier nicht so überladen. Vielen Dank schon mal :) |
AW: Auslesen von Quelltext nach Scriptlauf mit EdgeBrowser
Warum kodierst Du den HTML-Quelltext in Javascript noch mit EncodeURI? Du bekommst doch sowieso den Text als JSON zurück.
Das hier genügt:
Delphi-Quellcode:
EdgeBrowser1.executescript('document.documentElement.outerHTML');
Und dann
Delphi-Quellcode:
uses System.json, System.IOUtils;
... procedure TForm2.EdgeBrowser1ExecuteScript(Sender: TCustomEdgeBrowser; AResult: HRESULT; const AResultObjectAsJson: string); var json: TJSONValue; begin json := TJSONObject.ParseJSONValue(AResultObjectAsJson); TFile.writeAllText('test.html', json.AsType<string>, TEncoding.UTF8); json.Free; end; |
AW: Auslesen von Quelltext nach Scriptlauf mit EdgeBrowser
Hallo gubbe,
Warum ich EncodeURI verwende, ganz einfach. Ich wusste es nicht besser und habe mich dabei auf ![]() Das das nicht so optimal war hast du mir zum Glück gesagt! :thumb: Ich habe jetzt einfach mal deine Variante verwendet und es läuft so wie ich es wollte. Vielen herzlichen Dank an der Stelle! |
AW: Auslesen von Quelltext nach Scriptlauf mit EdgeBrowser
Zitat:
PS: Das Projekt ![]() |
AW: Auslesen von Quelltext nach Scriptlauf mit EdgeBrowser
Zitat:
|
AW: Auslesen von Quelltext nach Scriptlauf mit EdgeBrowser
Stimmt, mein Fehler, hab nicht ganz nach oben gescrollt im ersten Beitrag.
|
AW: Auslesen von Quelltext nach Scriptlauf mit EdgeBrowser
Hallo shebang,
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 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