Autor |
Beitrag |
dominikkv2
Hält's aus hier
Beiträge: 8
Turbo Delphi
|
Verfasst: So 24.09.06 19:16
Hi
ich habe vor 7 Tagen angefage mich mit Delphi zu beschäftigen und bin grad dabei mein zweites Program zu schreiben.
Dieses Programm soll den Quelltext aus einer webseite auslesen und daraus Informationen filtern.
Meine Frage: wie kann ich den Quelltext der seite abfragen die grad mein FireFox/Opera anzeigt? Wenn das nicht geht hatte ich die Idee die seite mit einem TWebBrowser anzuzeigen und dann darus den quelltext zu holen (wobei ich auch da nicht weiss wie das geht). In mehreren Beiträgen habe ich gesehen das man das mit der Komponente FastNet geht, allerdings hab ich Turbo Delphi ohne FasNet. Ausserdem soll es irgendwie mit IDHTTP gehen, hab allerdings keine ahnung wie
hoffe ihr könnt mir helfen
mfg.dominikkv
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: So 24.09.06 20:07
Hallo,
wenn es nur um den Quelltext geht, brauchst du keine Komponenten verwenden. Da kannst du direkt auf die APIs zugreifen:
Gruß Hape!
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: So 24.09.06 20:31
Wenn dein Browser die gefilterten Daten anzeigen soll, dann ist IdHTTPProxy (weiß den Namen leider nicht genau) das Richtige. Dann kannst du dein Programm im Browser als Proxy eintragen, und dein Prog bekommt jeden Quelltext.
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: So 24.09.06 20:35
Chryzler hat folgendes geschrieben: | Wenn dein Browser die gefilterten Daten anzeigen soll, dann ist IdHTTPProxy (weiß den Namen leider nicht genau) das Richtige. Dann kannst du dein Programm im Browser als Proxy eintragen, und dein Prog bekommt jeden Quelltext. |
Was meinst du damit? Welche Quelltext sollte man denn so nicht bekommen?
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: So 24.09.06 20:59
Ich meine damit das, was ich geschrieben habe. Vielleicht will dominikkv2 einen Webfilter o.ä. schreiben, und dazu muss man ja den gefilterten Quelltext im Browser anzeigen lassen. Er hat gefragt, wie er den Quelltext von der Seite kriegt, die gerade im FF angezeigt wird. Bei deinen Vorschlägen muss er erstmal die URL aus dem Browser kriegen, bei einem Proxy bekommt er die URL und dazu noch gleich den Quelltext.
|
|
marconist
      
Beiträge: 25
xp sp2
D5 pers
|
Verfasst: So 24.09.06 21:17
Hi,
ich halte auch die Lösung mit local proxy für die elegantere Möglichkeit.
Üblicherweise schreibe ich so etwas mit tserversocket und tclientsocket.
srs,
marconist
|
|
dominikkv2 
Hält's aus hier
Beiträge: 8
Turbo Delphi
|
Verfasst: Mo 25.09.06 18:34
hi
erstmal danke für eure antworten
ich will keinen webfilter machen, der browser soll alles anzeigen was er sonst auch anzeigen würde, nur will ich den quelltext von der seite holen. dieser quelltext enthält informationen die ich analysieren und speichern will. dazu muss ich doch irgendwie den quelltext der seite in mein programm "importieren", vllt in eine variable oder memo?
ich habe schon mehrmals das wort indy gehört, weiss aber nicht so ganz was das ist und wie ich das anwenden kann.
vllt könnt ihr mir einen beispiel-code geben damit ich da ein bisschen durchblick?
achja und bei swissdelphycenter hab ich schon geschaut, da brauch ich aber andere komponenten die ich nicht hab :/
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Mo 25.09.06 18:41
Also, die Indys sind Komponenten (hauptsächlich Netzwerkkomponenten), z.B. HTTP-Client, FTP-Client, aber auch Server, z.B. Telnet-Server, FTP-Server. Darunter ist auch ein HTTPProxy.
Ich weiß nicht ob bei Turbo Delphi die Indy Komponenten dabei sind. (Ich weiß nichtmal was Turbo Delphi ist). Ich glaube die Indys sind kostenlos, d.h. du müsstest sie auch irgendwo runterladen können.
Wenn du die Komponenten hast, dann pflanzt du dir so einen TIdTTPProxy auf deine Form. Wie es weitergeht, sag ich dir nachher...
Chryzler
|
|
dominikkv2 
Hält's aus hier
Beiträge: 8
Turbo Delphi
|
Verfasst: Mo 25.09.06 18:53
turbo-delphi ist eine kostenlose version von delphi und ist glaube ich erst seit september draussen. früher hieß das mal developper studio oder so^^
indy 9 und 10 sind dabei, nur weiss ich eben nicht wie ich das anwenden kann. es gibt auch keine objekte wie TIdTTPProxy von indy die man auf die form ziehen kann 
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Mo 25.09.06 19:14
Also ich hab grad nachgeschaut: es heißt TIdHTTPProxyServer
Hier hab ich was brauchbares gefunden. Im HTTPDocument-Ereignis des IdHTTPProxyServers gibt es das Argument "ADocument". Das müsste eigentlich die URL sein, die man aufgrufen hat. Dann gibt es noch ein Argument namens "VStream", das ist der Quelltext.
|
|
dominikkv2 
Hält's aus hier
Beiträge: 8
Turbo Delphi
|
Verfasst: Do 28.09.06 14:43
hi
ich hab leider keine ahnung wie ich Indy verwenden kann :/
es gibt keinerlei objekte die TIdHTTPProxyServer oder ähnlich heißen oder irgendwas mit Indy zu tun haben...
oder muss ich das irgendwie anders machen?
btw: gibt es hier im forum irgendein bewertungssystem zum bewerten der posts anderer?
|
|
Marc_S
Hält's aus hier
Beiträge: 2
|
Verfasst: Fr 29.09.06 15:31
Hi Dominik,
auf der Homepage SwissDelphiCenter unter Tips gibt es viele Code-Beispiele.
Unter anderen gibt es 3 Möglichkeiten wie man eine Datei aus dem Netz laden kann.
Und dreimal darfste raten was du erhälst wenn du ein *.html Dokument herunterlädst
Gruss,
MArc
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Sa 30.09.06 17:14
dominikkv2 hat folgendes geschrieben: | hi
ich hab leider keine ahnung wie ich Indy verwenden kann :/
es gibt keinerlei objekte die TIdHTTPProxyServer oder ähnlich heißen oder irgendwas mit Indy zu tun haben... |
Dann ist bei deinem Delphi auch kein Indy dabei.  Lade dir doch mal von der Homepage die Komponenten runter.
dominikkv2 hat folgendes geschrieben: | gibt es hier im forum irgendein bewertungssystem zum bewerten der posts anderer? |
Ein Bewertungssystem gibts hier nicht, wäre aber eine gute Idee! 
|
|
dominikkv2 
Hält's aus hier
Beiträge: 8
Turbo Delphi
|
Verfasst: Sa 30.09.06 18:56
hmm...ich glaub ich hab indy installiert...bei der installation hat er mich gefragt ob er indy 9 oder 10 verwenden soll.
naja auf jedenfall ich habs jetzt geschaft
mit der funktion:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| 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); end; finally ss.Free; end; end; |
jetzt hab ich aber ein problem:
auf "normalen" inetseiten funktioniert das, allerdings nicht auf der seite www.space-pioneers.de/ wo das programm letztendlich eingesetzt werden soll :/
wenn man aber die seite Aktualisiert gehts <--!!
weiss jemand warum und wie ich es hinbekomm das man den quelltext gleich bekommt und nicht erst aktualisieren muss?
eine alternative ist es wie oben gesagt einen proxyserver zu erstellen...gibt es da tutorials dazu?
danke für eure antworten
mfg.dominik
|
|
dominikkv2 
Hält's aus hier
Beiträge: 8
Turbo Delphi
|
Verfasst: So 01.10.06 14:51
ich hab mir jetzt borland developer studio 2006 runtergeladen und da kann ich jetzt indy benutzen...
hab TIdHTTPProxyServer auf Form1 plaziert und im FF den proxy eingetragen und siehe da... klappt auf anhieb.
allerdings hab ich ein neues problem ...
hier mal der quelltext:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdCustomTCPServer, IdTCPServer, IdCmdTCPServer, IdHTTPProxyServer;
type TForm1 = class(TForm) IdHTTPProxyServer1: TIdHTTPProxyServer; procedure IdHTTPProxyServer1Connect(AContext: TIdContext); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.IdHTTPProxyServer1Connect(AContext: TIdContext); begin showmessage ('connected') end;
end. |
Fehlermeldung:
Zitat: | [Pascal Fehler] Unit1.pas(13): E2003 Undefinierter Bezeichner: 'TIdContext' |
-.-
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: So 01.10.06 14:56
_________________ Markus Kinzler.
|
|