![]() |
Re: (angezeigten) Text einer HTML-Quelle ermitteln
Zitat:
<Ausrede>IDocHostUIHandler hängt ja irgendwie mit IWebBrowser2 zusammen :zwinker:</Ausrede> |
Re: (angezeigten) Text einer HTML-Quelle ermitteln
Salut ihr beiden.
Ich habe folgendes probiert:
@marabu: Ergebnis: Richtig vermutet! Direkt nach dem Navigate ist es zufrüh nach dem WebBrowser1.Document zu fragen. Ich habe deshalb erst bei OnDocumentComplete mit Document gearbeitet. Funktioniert prima! Ich kann auf Doc.title, Doc.body.innerText,... zugreifen. Danke! :thumb: Un das mit dem mehrfachen Auslösen bei mehreren Frames ist auch gut. Das Verhalten kommt mir entgegen. Schade für mich: innerText gibt nicht den Text zurück, den ich mir erhofft hatte. :| Es sind noch alle HTML-Tags enthalten. Scheint also so, als müsste ich die HTML-Tags doch noch selbst entfernen; entweder durch reguläre Ausdrücke oder durch den Dokumentbaum hangeln. Wo wir schon fast dabei sind: Gibt es eine Komponente die durch HTML-Tags eines Dokuments iteriert? Oder kann man sich bei TWebBrowser beim erstellen des Dokuments einklinken, so dass man die Tags mitbekommt? @Olli: Jeder kann sich mal irren... Auf jeden Fall: Danke für die Hilfe! :thumb: Auf reguläre Ausdrücke werde ich ganz bestmmt noch einmal zurückkommen. Ich kenne sie aus PHP und finde sie sehr bequem. Habe ich in Delphi vermisst als ich sie kennengelernt habe. MfG Panthrax |
Re: (angezeigten) Text einer HTML-Quelle ermitteln
Neunis Lösung ist doch super. Was habt ihr denn daran auszusetzen? Einfach erstmal die Zeilenumbrüche (#13#10 erstzen durch '' und danach <br*> ersetzen durch #13#10) dann ein stringgreplace, welches Wildcards kann und dann '<*>' durch '' ersetzen und dann noch die htmlspecialchars und schon perfekt.
|
Re: (angezeigten) Text einer HTML-Quelle ermitteln
Den Link hab ich im I-Net gefunden. Kannste dir ja mal anschauen und entsprechend verändern.
![]() MfG, St.Pauli |
Re: (angezeigten) Text einer HTML-Quelle ermitteln
Hallo Panthrax,
Zitat:
Bei komplexen Dokumenten verwende ich gelegentlich den von dir erwähnten iterativen / rekursiven Ansatz über die property children. Auch das ist keine Universallösung. marabu |
Re: (angezeigten) Text einer HTML-Quelle ermitteln
Wenn du wohlgeformtes XHTML verwendest, kannst du einen XML-Parser nehmen und beispielsweise via XPATH alle Elemente, die Text enthalten, ermitteln und deren Text extrahieren.
|
Re: (angezeigten) Text einer HTML-Quelle ermitteln
@marabu:
Ui. Es war gestern wahrscheinlich doch schon etwas spät... Hatte wirklich innerHTML, und nicht innerText verwendet. :oops: Ich habe es korrigiert - und auch kein HTML mehr. :angel2: Danke. Was ich noch nicht gefunden habe ist der Hinweis auf die CSS-Datei bzw. die verwendeten StyleSheets. In dem Zusammenhang interessiert mich auch woher bekomme ich die Standardeinstellungen der Elementdarstellungen? Denn mit CSS werden diese Darstellungen ja modifiziert. Da MSHTML nicht in der Hilfe Dokumentiert ist (Ich finde jedenfalls keinen Hilfeeintrag dazu; bleibt wohl nur die MS-Webseite als Referenz.), habe ich mir TXMLDocument noch einmal genauer angesehen. Also es ist ja schon nicht schlecht mit IXMLNode durch die einzelnen Elemente navigieren zu können, und ihre Attribute und Inhalte lesen zu können. Aber mit TXMLDocument funktioniert das ja nur, wenn das Dokument wohlgeformt ist. @Chewie: Danke für den Hinweis, aber was ist XPath? :gruebel: Hab mich mal in der Komponentenpalette umgeschaut. Aber irgendwie findet sich dort kein Parser oder eine Komponente die man dazu misbrauchen könnte. Hat jemand empfehlungen? Wo wir schon dabei sind: gibt es auch Parser für CSS-Dateien? Gruß Panthrax |
Re: (angezeigten) Text einer HTML-Quelle ermitteln
XPath:
![]() Es ist im Wesentlichen eine Sprache zum Adressieren von Knoten eines XML-Dokumentes. Und als Parser könntest du z.B. MSXML einsetzen. |
Re: (angezeigten) Text einer HTML-Quelle ermitteln
XPath hab ich verstanden. Für die Mitlesenden: Ich habe meine Informationen im wesentlichen hier gefunden:
![]() ![]() Als ich Parser meinte, hatte ich eher an eine Komponente gedacht, die man mit einem Parser wie "MSXML" verwendet (etwa wie bei TXMLDocument). Also eine Komponente, die, wenn sie auf ein Tag trifft ein Ereignis auslöst, bei dem ich mich einklinken kann. Etwa so wie dies bei TPageProducer der falls ist: Parst eine Vorlage um die Ausgabe zu generieren und löst ein Ereignis OnHTMLTag aus. Gibt es soetwas auch für zu parsende HTML/XML-Dateien? Panthrax |
Re: (angezeigten) Text einer HTML-Quelle ermitteln
Hallo Panthrax,
es gibt zwei grundverschiedene Ansätze für das Parsen von XML (und auch generell). Beim einen (IXMLDOMDocument) baut der Parser eine in-memory Struktur auf, die das untersuchte Dokument repräsentiert, beim anderen (ISAXXMLReader) werden Ereignisse ausgelöst, auf die du reagieren kannst. Du solltest dir den Microsoft Platform SDK besorgen, der all diese Systemkomponenten dokumentiert. Auch Tutorials und sample code ist dabei. Unverzichtbar. marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz