AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

webseiten durchsuchen + neu laden

Ein Thema von eliciel · begonnen am 12. Sep 2009 · letzter Beitrag vom 14. Sep 2009
Antwort Antwort
eliciel

Registriert seit: 17. Okt 2008
5 Beiträge
 
#1

webseiten durchsuchen + neu laden

  Alt 12. Sep 2009, 03:43
hallo zusammen,

ich versuche zur zeit ein programm zum laufen zu kriegen, welches eine seite laedt, sie nach einem string durchsucht (falls gefunden, eintrag in einer listbox) und dann neulaedt.

arbeite ich mit OnDocumentComplete, laeuft der aktualisierungsvorgang sehr schnell durch, jedoch "verschluckt" er ab und zu treffer und er speichert nichts in der listbox.

arbeite ich mit einem timer und frage den seitenstand ab mit ReadyState(=4), verschluckt er die treffer ebenso haeufig.

ich moechte, dass der aktualisierungsvorgang so schnell wie moeglich durchgefuehrt wird, ohne dass irgendwelche treffer verschluckt werden, allerdings hab ich das bisher nur realisieren koennen mit entsprechend hohem timer-interval.

aus welchem grund fuehrt er den code unter OnDocumentComplete manchmal nicht aus? es scheint, als wuerde die seite schneller neuladen als er den code ausfuehren kann, wobei der code dann uebersprungen und nicht mehr ausgefuehrt wird und ein neues OnDocumentComplete von vorn beginnt. warum tut er das?

Delphi-Quellcode:
function suchetext(WB: TWebBrowser; Text: string): boolean ;
var
   tr: IHTMLTxtRange;
begin
   if Assigned(WB.Document) then
   begin
     tr := ((wb.Document AS IHTMLDocument2).body AS IHTMLBodyElement).createTextRange;
     if tr.findText(Text, 1, 0) then result := true else result := false;
   end;
end;


procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  if suchetext(webbrowser1, 'text') then listbox1.items.add('treffer!');
  // hier stehen noch mehr abfragen, die die prozedur wohl etwas verlangsamen
  webbrowser1.navigate('http://localhost/');
end;

die suchetext - funktion hab ich irgendwo beim googlen mal gefunden, in anderem zusammenhang (woerter suchen und farblich markieren).. ich hoffe, ich benutz die hier richtig?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: webseiten durchsuchen + neu laden

  Alt 12. Sep 2009, 18:28
Hallo,

kann es eventuell daran liegen:

Zitat:
Description
Write an OnDocumentComplete event handler to take specific action when a frame or document is fully loaded into the Web browser .For a document without frames, this event occurs once when the document finishes loading. On a document containing multiple frames, this event occurs once for each frame. When the multiple-frame document finishes loading, the Web browser fires the event one final time.
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
eliciel

Registriert seit: 17. Okt 2008
5 Beiträge
 
#3

Re: webseiten durchsuchen + neu laden

  Alt 12. Sep 2009, 19:38
hallo klaus,

danke fuer die antwort. die seite, die geladen wird, enthaelt jedoch keine "multiple frames". daran liegt es also nicht.

aber klingt interessant, woher gibt es solche beschreibungen?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: webseiten durchsuchen + neu laden

  Alt 12. Sep 2009, 19:50
Zitat von eliciel:
hallo klaus,

danke fuer die antwort. die seite, die geladen wird, enthaelt jedoch keine "multiple frames". daran liegt es also nicht.

aber klingt interessant, woher gibt es solche beschreibungen?
Die Beschreibung ist aus der Delphi Hilfe.

Ich weiß ja nicht ob Du mit der jetzigen (fehlerhaften) Lösung
festgenagelt bist.

Ansonsten könntest Du es mal mit TidHttp probieren.
TidHttp.get liefert das Dokument als Text oder Stream.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
eliciel

Registriert seit: 17. Okt 2008
5 Beiträge
 
#5

Re: webseiten durchsuchen + neu laden

  Alt 13. Sep 2009, 02:37
leider so wenig an der methode gebunden, dass ich umgeschwenkt bin auf php. damit liess es sich auf anhieb loesen und rennt (denke ich) schnell genug.

reizen tut mich die von dir vorgeschlagene methode jedoch auch, nur findet sich weder in der hilfe noch bei google ansprechendes material.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: webseiten durchsuchen + neu laden

  Alt 13. Sep 2009, 03:36
Zitat von eliciel:
leider so wenig an der methode gebunden, dass ich umgeschwenkt bin auf php. damit liess es sich auf anhieb loesen und rennt (denke ich) schnell genug.

reizen tut mich die von dir vorgeschlagene methode jedoch auch, nur findet sich weder in der hilfe noch bei google ansprechendes material.

TIdHttp -> Google -> Ergebnisse 1 - 10 von ungefähr 517.000 für TidHttp. (0,06 Sekunden) (Der erste Link führt direkt zur Doku der Indy's)
TIdHttp.Get -> Google -> Ergebnisse 1 - 10 von ungefähr 8.010 für TIdHttp.Get. (0,21 Sekunden)

Und da soll nix dabei sein?

http://www.indyproject.org/Sockets/Docs/index.DE.aspx

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#7

Re: webseiten durchsuchen + neu laden

  Alt 13. Sep 2009, 08:34
Das Ereignis OnDocumentComplete wird oft mehrmals ausgelöst. Daher musst du prüfen, ob die tatsächliche Seite fertig geladen ist.
Delphi-Quellcode:
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
var
  Document: IHTMLDocument2;
begin
  TWebBrowser(Sender).ControlInterface.Document.QueryInterface(IID_IHTMLDocument, Document);
  if Assigned(Document) then
    if SucheText(TWebBrowser(Sender), 'text') then
      ListBox1.Items.Add('Treffer!');
end;
Aber wenn du viele Seiten laden willst, dann würde ich auch eher zu TIdHTTP greifen.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
eliciel

Registriert seit: 17. Okt 2008
5 Beiträge
 
#8

Re: webseiten durchsuchen + neu laden

  Alt 14. Sep 2009, 02:30
ich hab jetzt mal sprints loesung probiert, diese scheint nun wirklich zu funktionieren. die php loesung war nur augenscheinlich fehlerfrei, verschluckte aber immernoch einiges, wie sich jetzt durch den einsatz von sprints loesung herausgestellt hat.

und wieder einmal muss ich feststellen, dass ich in wirklichkeit keinen schimmer von irgendwas im informatikbereich habe. was genau seine zwei extrazeilen jetzt machen, versteh ich nichtmal im ansatz, und die "indy" docu krieg ich nichmal geoeffnet :D wenn das naechstes jahr so im studium anfaengt, kann ich ja gleich einpacken.

trotzdem vielen dank fuer die hilfe, mein problem scheint jetzt geloest zu sein. ohne tidhttp, was auch immer dieses mysterioese etwas sein soll.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

Re: webseiten durchsuchen + neu laden

  Alt 14. Sep 2009, 02:37
Zitat von eliciel:
ich hab jetzt mal sprints loesung probiert, diese scheint nun wirklich zu funktionieren. die php loesung war nur augenscheinlich fehlerfrei, verschluckte aber immernoch einiges, wie sich jetzt durch den einsatz von sprints loesung herausgestellt hat.

und wieder einmal muss ich feststellen, dass ich in wirklichkeit keinen schimmer von irgendwas im informatikbereich habe. was genau seine zwei extrazeilen jetzt machen, versteh ich nichtmal im ansatz, und die "indy" docu krieg ich nichmal geoeffnet wenn das naechstes jahr so im studium anfaengt, kann ich ja gleich einpacken.

trotzdem vielen dank fuer die hilfe, mein problem scheint jetzt geloest zu sein. ohne tidhttp, was auch immer dieses mysterioese etwas sein soll.
Ja so ein gezipptes PDF-Dokument kann einen schon vor große Schwierigkeiten stellen ...

... ich denke bei dir liegt das problem im "nicht verstehen wollen",
aber wollen wir dir ja auch nicht wegnehmen, soll ruhig deins bleiben
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
eliciel

Registriert seit: 17. Okt 2008
5 Beiträge
 
#10

Re: webseiten durchsuchen + neu laden

  Alt 14. Sep 2009, 04:32
wegnehmen? seh jetz grad erst, dass es das auch als .pdf gibt.. war vor die schwierige aufgabe gestellt, ne .chm zu oeffnen, in der ich ausser der "startseite" nichts oeffnen konnte.


edit:
ueberhaupt, was soll dein beitrag?

ich hab in der schule wenig gelernt. ich weiss nicht, was klassen sind, ich hab nie von indy gehoert, ich hab keine ahnung, wie ich tidhttp einbinden kann geschweigedenn benutzen kann, nichts. dagegen hilft mir eine tabelle mit den methoden, die ich mit tidhttp benutzen kann, recht wenig. die tabelle hatte ich auch ueber google gefunden, da ich damit aber nichts anfangen konnte/kann, wurde sie als "nicht ansprechendes material" klassifiziert.
  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 16:36 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