![]() |
TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames)
Hi,
ich stehe mal wieder vor einem Problem und zwar moechte ich den gesamten Quelltext eine Internetseite auslesen.
Delphi-Quellcode:
Leider beruecksichtigt keins von beiden mehrere Frames.
aString := IdHTTP1.Get('http://google.de');
var v: variant; v:= Form1.WebBrowser1.Document; aString := v.Body.OuterHTML; Wie kann ich den Quelltext aller Frames auslesen, so wie in Firefox Aktueller Frame -> Frame-Quelltext anzeigen ? grueße win32 |
Re: TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames
Schaue mal hier bei den
![]() |
Re: TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames
|
Re: TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames
@RWarnecke
Danke fuer die Antwort, aber leider bringt das nicht das gewuenschte Ergebniss :( Es speicher zwar 3 Frames dessen Inhalt aber nicht dem gewuenschten entspricht. @marabu Ich habe eine funktion von dir gefunden, danke schonmal dafuer :
Delphi-Quellcode:
Leider funktionoiert dies auch nicht, liege ich richtig in der Annahme das MAIN der name des Frames ist?
function GetFrameDoc(doc: IHTMLDocument2; v: OleVariant): IHTMLDocument2;
var win: IHTMLWindow2; u: IUnknown; ec: IHTMLElementCollection; begin u := doc.frames.item(v); if Assigned(u) and Succeeded(u.QueryInterface(IHTMLWindow2, win)) then Result := win.Document else Result := nil; end; function DocToStrings(doc: IDispatch; s: TStrings): Boolean; var ps: IPersistStreamInit; sa: IStream; ms: TStream; begin if Succeeded(doc.QueryInterface(IPersistStreamInit, ps)) then begin ms := TMemoryStream.Create; sa := TStreamAdapter.Create(ms, soReference) as IStream; Result := Succeeded(ps.Save(sa, true)); ms.Position := 0; s.LoadFromStream(ms); ms.Free; end; end; procedure TForm1.Button2Click(Sender: TObject); var doc: IHTMLDocument2; s: TStrings; begin doc := GetFrameDoc(WebBrowser1.Document as IHTMLDocument2, 'MAIN'); if Assigned(doc) then begin s := TStringList.Create; if DocToStrings(doc, s) then ShowMessage(s.Text) else ShowMessage('Rats!'); s.Free; end; end; Selbst mit dem Richtigen namen, bekomme ich immer die meldung: Zitat:
Es geht um diese ![]() grüße win32 |
Re: TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames
Hallo win32,
die Techniken aus GetFrameDoc() übertragen auf dein Problem:
Delphi-Quellcode:
Testen kannst du es so:
procedure ShowFrames(fc: IHTMLFramesCollection2);
var v: OleVariant; win: IHTMLWindow2; doc: IHTMLDocument2; e: IHTMLElement; fse: IHTMLFrameSetElement; u: IUnknown; begin v := 0; while v < fc.length do begin u := fc.item(v); if Succeeded(u.QueryInterface(IHTMLWindow2, win)) then begin doc := win.Document; if Assigned(doc) then begin if Succeeded(doc.body.QueryInterface(IHTMLFrameSetElement, fse)) then ShowFrames(doc.frames) else ShowMessage(doc.body.parentElement.outerHTML) end; end; v := v + 1; end; end;
Delphi-Quellcode:
Gute Nacht
begin
with WebBrowser.Document as IHTMLDocument2 do ShowFrames(frames); end; |
Re: TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames
Dankeschoen fuer deine Antwort, hat mir viel Arbeit und Zeit erspart :)
grueße win32 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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