webseiten durchsuchen + neu laden
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? |
Re: webseiten durchsuchen + neu laden
Hallo,
kann es eventuell daran liegen: Zitat:
Klaus |
Re: webseiten durchsuchen + neu laden
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? |
Re: webseiten durchsuchen + neu laden
Zitat:
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 |
Re: webseiten durchsuchen + neu laden
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. |
Re: webseiten durchsuchen + neu laden
Zitat:
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 |
Re: webseiten durchsuchen + neu laden
Das Ereignis OnDocumentComplete wird oft mehrmals ausgelöst. Daher musst du prüfen, ob die tatsächliche Seite fertig geladen ist.
Delphi-Quellcode:
Aber wenn du viele Seiten laden willst, dann würde ich auch eher zu TIdHTTP greifen.
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; |
Re: webseiten durchsuchen + neu laden
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. |
Re: webseiten durchsuchen + neu laden
Zitat:
... ich denke bei dir liegt das problem im "nicht verstehen wollen", aber wollen wir dir ja auch nicht wegnehmen, soll ruhig deins bleiben :mrgreen: |
Re: webseiten durchsuchen + neu laden
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06: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