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:
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;
Das funktioniert erstmal augenscheinlich. Der Quelltext wird ordentlich in eine Datei geschrieben.
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:
Datei = open("Quelltext.txt", "r" , encoding='utf-8')
So öffne ich die Datei im Python.
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.
Edgebrowser1.NavigateToString(OutPutSl.Text);
Dies übergibt den Quelltext erneut an den EdgeBrowser und wird dann angezeigt.
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