Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IE auslesen (https://www.delphipraxis.net/126566-ie-auslesen.html)

laggy 28. Dez 2008 13:58


IE auslesen
 
servus leuts

ich möchte auf einer bestimmten seiten text auslesen und in ein prog anzeigen lassen kann mir jemand helfen???

mfg laggy[dp]

toms 28. Dez 2008 14:02

Re: IE auslesen
 
Hallo, was ist nun die konkrete Frage?

laggy 28. Dez 2008 14:05

Re: IE auslesen
 
auf einer internet seite!!!

möchte ich ein text was angeben ist auslessen und in mein programm anzeigen lassen

toms 28. Dez 2008 14:10

Re: IE auslesen
 
Zitat:

Zitat von laggy
auf einer internet seite!!!

Muss es unbedingt von einer laufenden IE Instanz sein?

laggy 28. Dez 2008 14:12

Re: IE auslesen
 
anderst bekomm ich es noch nicht hin es sei dem kannst mir damit auch helfen

toms 28. Dez 2008 14:17

Re: IE auslesen
 
Zitat:

Zitat von laggy
anderst bekomm ich es noch nicht hin es sei dem kannst mir damit auch helfen

Den Quelltext einer Seite kannst du z.B auch mit der TIdHTTP Komponente von Indy auslesen:


Delphi-Quellcode:
Quelltext := IdHTTP1.Get('http://www.webseite.de');

laggy 28. Dez 2008 14:25

Re: IE auslesen
 
ok danke

aber ich meinte den text, der sich in bestimmten abständen verändert wie zb. besucherzahlen steht jetzt 10 und in einer halben stunde 500 da und das möcht ich auslesen und anzeigen

weist wie ich mein???

toms 28. Dez 2008 14:27

Re: IE auslesen
 
Zitat:

Zitat von laggy
aber ich meinte den text, der sich in bestimmten abständen verändert wie zb. besucherzahlen steht jetzt 10 und in einer halben stunde 500 da und das möcht ich auslesen und anzeigen

Kannst ja den Quelltext parsen mit Copy() / Pos() / Delete() etc.

mkinzler 28. Dez 2008 14:27

Re: IE auslesen
 
Eigene Seite?

laggy 28. Dez 2008 14:30

Re: IE auslesen
 
nein keine eigene seite

bigben37 28. Dez 2008 14:31

Re: IE auslesen
 
Such nach Quelltextzeilen, die einzigartig sind (z.B. id="besucherzähler") und in der Nähe deiner Zahl sind. Dann kannst du ja deine Zahl auslesen.
Nützliche Funktionen:
  • pos(): Gibt dir die Position eines Strings in einem Text zurück.
  • copy(): Kopiert Teile eines Strings

MFG Benjamin

Edit: Wieso war bei Toms kein roter Kasten :gruebel:

mkinzler 28. Dez 2008 14:32

Re: IE auslesen
 
Dann bleibt dir nichts anderes übrig, als die Html-Datei zu parsen

laggy 28. Dez 2008 14:36

Re: IE auslesen
 
ok ich werd es mal probieren

thx an alle

renekr 1. Feb 2009 12:52

Re: IE auslesen
 
Hi @,
ich bin soeben auch an diesem Problem dran,aber mit Get bekomme ich nur den Header ausgelesen.
Wie kann ich nun den Kompletten Quelltext der Seite auslesen ?


Vielen Dank.

Larsi 1. Feb 2009 14:39

Re: IE auslesen
 
Das Problem kenne ich. Du könntest mit TWebbrowser die Seite aufrufen und dann den quelltext auslesen.

renekr 1. Feb 2009 15:31

Re: IE auslesen
 
Hi,
Wie kan nes eigentlich sein das einige Seiten gehen also der reine Quelltext und andere nicht also nur den Head. ?

wie mach i das genau ?
Hab schon einige Funktionen gefunden aber da bekomme ich auch leider nur den Head aus dem Document raus.

Bin nun schon soweit das ich die links im webbrowser laden will und während dem laden mit tracent mit wincap !
aber das is oversize für das was ich will.

Ich will nur den Quelltext raus hoeln wo ich mit rechts klichk Quelltext auslesen im IE auch sehe.

das würde mir reichen.

danke

blink182 1. Feb 2009 17:13

Re: IE auslesen
 
hiho,
ich hab denke ich was, was dir hilft, weiß zwar nicht mehr woher genau ich das hab, ist auch nicht von mir. Hoffe das ist okay, wenn ich den Code jetzt hier poste:

Delphi-Quellcode:
uses ComObj,OleCtrls, SHDocVw_TLB,ActiveX,MSHTML_TLB; // kA ob ActiveX unbedingt dabei sein muss

var
 vIE : OleVariant;
 Memo2: TMemo;

// Internet Explorer Instanz wird erstellt und die Adresse in Edit1.text aufgerufen
procedure TForm1.Button2Click(Sender: TObject);
begin
vIE := CreateOleObject('InternetExplorer.Application');
vIE.visible:=true;
vIe.navigate(Edit1.text);
sleep(3000);
Button3.Click;
end;

// Quellcode holen
function GetHTMLCode(WB: IWebbrowser2; ACode: TStrings): Boolean;
var
 ps: IPersistStreamInit;
 s: string;
 ss: TStringStream;
 sa: IStream;
begin
 ps := WB.document as IPersistStreamInit;
 s := '';
 ss := TStringStream.Create(s);
 try
   sa:= TStreamAdapter.Create(ss, soReference) as IStream;
   Result := Succeeded(ps.Save(sa, Bool(True)));
   if Result then ACode.Add(ss.Datastring);
 finally
   ss.Free;
 end;
end;


// Das Aktuelle Internet Explorer Fenster wird gesucht

procedure TForm1.Button3Click(Sender: TObject);
var
 ShellWindow: IShellWindows;
 WB: IWebbrowser2;
 spDisp: IDispatch;
 IDoc1: IHTMLDocument2;
 k: Integer;
 s:string;
 a:integer;
begin
 Memo2.clear;
 ShellWindow := CoShellWindows.Create;
 // get the running instance of Internet Explorer
 for k := 0 to ShellWindow.Count do
 begin
   spDisp := ShellWindow.Item(k);
   if spDisp = nil then Continue;
   // QueryInterface determines if an interface can be used with an object
   spDisp.QueryInterface(iWebBrowser2, WB);
   if WB <> nil then
   begin
     WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
     if iDoc1 <> nil then
     begin
       WB := ShellWindow.Item(k) as IWebbrowser2;
       begin
         // Add HTML Code to Memo
         GetHTMLCode(WB, Memo2.Lines);
       end;
     end;
   end;
 end;
end;


// irgendwann dann den IE wieder schließen

vIE.quit;
hoffe das ist was du suchst und dann kannst du im Memo2 deine Parsing starten ;)

renekr 1. Feb 2009 18:11

Re: IE auslesen
 
Hi,
Danke,
aber leider ist egal was ich mache das iDoc immer nil .
nur wenn vorher schon ein IExplorer auf ist dann gings aber mit dem Code von dem anderen IE.

Aber es muss doch einen einfacheren Weg geben ?
Ich will ja nur den Quellcode in voller länge haben .
Ohne IE Instanz und TWebbrowser öffnen zu müssen.

Vielen Dank

Klaus01 1. Feb 2009 18:16

Re: IE auslesen
 
Guten Abend,

hast Du schon getHTML ausprobiert?

Grüße
Klaus

Meflin 1. Feb 2009 18:32

Re: IE auslesen
 
Zitat:

Zitat von renekr
ich bin soeben auch an diesem Problem dran,aber mit Get bekomme ich nur den Header ausgelesen.
Wie kann ich nun den Kompletten Quelltext der Seite auslesen

Du könntest mal versuchen, den User-Agent deiner IdHTTP-Instanz auf einen Browser einzustellen, also z.B.
Code:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)

renekr 1. Feb 2009 18:44

Re: IE auslesen
 
Hi Klaus und Meflin ,
Ich habe beides getestet soeben aber das ergebniss ist das selbe.
Nur der Header.


Bin langsam echt ratlos.

Meflin 1. Feb 2009 18:47

Re: IE auslesen
 
Welche Webseite konkret willst du denn auslesen? Funktioniert der IdHHTP-Code mit anderen Webseiten?

Klaus01 1. Feb 2009 19:11

Re: IE auslesen
 
Handelt es sich vielleicht um eine WebSeite mit Frames.
Ein gutes Beispiel von marabu dazu kannst Du hier finden.

Grüße
Klaus

renekr 1. Feb 2009 19:22

Re: IE auslesen
 
Hi,
also ich will die Links rausbekommen von zb:

Link

Ich denke nicht das da was dagegen spricht rein rechtlich ,oder ?

Vielen Dank.

blink182 1. Feb 2009 19:48

Re: IE auslesen
 
und wie wärs wenn du einfach die datei runterlädst und dann in ein Memo lädst oder so?
sollte mit indy gehen und dann nennst du die datei einfach links.html oder so und lädst die dann ins memo und ließt den link aus

aber du sollest dir den Frame-Code anschauen, da es sich bei deinem link um einen eingebundenen Frame handelt

blink182 1. Feb 2009 19:50

Re: IE auslesen
 
sorry 4 doppelposting, aber irgendwie hat es hier bisschen probleme mit dem senden gegeben
den beitrag bitte löschen

renekr 1. Feb 2009 20:08

Re: IE auslesen
 
Hi ,
das kapier ich nciht ganz mit der Datei Idee?
Ich will eigentlich nur die Links rausholen,für den späteren Download mit einem Tool.
Weil es leider mehrere sind und ich nicht alle von hand kopieren will.

Schaue mir mal das mit den Frames an.
danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:46 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