AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames)
Thema durchsuchen
Ansicht
Themen-Optionen

TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames)

Ein Thema von Win32.API · begonnen am 3. Dez 2006 · letzter Beitrag vom 4. Dez 2006
Antwort Antwort
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#1

TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames)

  Alt 3. Dez 2006, 16:29
Hi,

ich stehe mal wieder vor einem Problem und zwar moechte ich den gesamten Quelltext eine Internetseite auslesen.

Delphi-Quellcode:
aString := IdHTTP1.Get('http://google.de');


var
 v: variant;

 v:= Form1.WebBrowser1.Document;
 aString := v.Body.OuterHTML;
Leider beruecksichtigt keins von beiden mehrere Frames.

Wie kann ich den Quelltext aller Frames auslesen, so wie in Firefox Aktueller Frame -> Frame-Quelltext anzeigen ?

grueße win32
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

Re: TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames

  Alt 3. Dez 2006, 17:03
Schaue mal hier bei den Schweizern, vielleicht hilft Dir das weiter.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames

  Alt 3. Dez 2006, 17:22
Hi,

alternativ kannst du in der DP nach Hier im Forum suchenGetFrameDoc suchen.

Freundliche Grüße
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#4

Re: TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames

  Alt 3. Dez 2006, 17:39
@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:
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;
Leider funktionoiert dies auch nicht, liege ich richtig in der Annahme das MAIN der name des Frames ist?
Selbst mit dem Richtigen namen, bekomme ich immer die meldung:
Zitat:
---------------------------
Project2
---------------------------
Mitglied nicht gefunden.
---------------------------
OK
---------------------------


Es geht um diese Seite.

grüße win32
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames

  Alt 3. Dez 2006, 19:34
Hallo win32,

die Techniken aus GetFrameDoc() übertragen auf dein Problem:

Delphi-Quellcode:
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;
Testen kannst du es so:

Delphi-Quellcode:
begin
  with WebBrowser.Document as IHTMLDocument2 do
    ShowFrames(frames);
end;
Gute Nacht
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#6

Re: TWebbrowser/IdHTTP kompletten Quelltext auslesen (frames

  Alt 4. Dez 2006, 12:08
Dankeschoen fuer deine Antwort, hat mir viel Arbeit und Zeit erspart


grueße win32
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz