AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi (angezeigten) Text einer HTML-Quelle ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

(angezeigten) Text einer HTML-Quelle ermitteln

Ein Thema von Panthrax · begonnen am 30. Jul 2005 · letzter Beitrag vom 1. Aug 2005
Antwort Antwort
Seite 2 von 3     12 3      
Olli
(Gast)

n/a Beiträge
 
#11

Re: (angezeigten) Text einer HTML-Quelle ermitteln

  Alt 30. Jul 2005, 22:54
Zitat von marabu:
Olli, dass mit dem faulty memory recall wird immer schlimmer - nicht nur bei dir. Ich dachte früher, ich werde alt, aber heute weiß ich woran es liegt: information overload! Die armen Synapsen...
Danke für die tröstenden Worte.

<Ausrede>IDocHostUIHandler hängt ja irgendwie mit IWebBrowser2 zusammen </Ausrede>
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#12

Re: (angezeigten) Text einer HTML-Quelle ermitteln

  Alt 30. Jul 2005, 23:22
Salut ihr beiden.

Ich habe folgendes probiert:
  • eine Test-Ausgabe direkt nach WebBrowser1.Navigate(...) eingefügt, und
  • eine Test-Ausgabe mti WebBrowser1.OnDocumentComplete eingefügt

@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! 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! 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
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#13

Re: (angezeigten) Text einer HTML-Quelle ermitteln

  Alt 30. Jul 2005, 23:22
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.
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#14

Re: (angezeigten) Text einer HTML-Quelle ermitteln

  Alt 31. Jul 2005, 02:10
Den Link hab ich im I-Net gefunden. Kannste dir ja mal anschauen und entsprechend verändern. Link

MfG, St.Pauli
Gruß St.Pauli
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: (angezeigten) Text einer HTML-Quelle ermitteln

  Alt 31. Jul 2005, 08:26
Hallo Panthrax,

Zitat von Panthrax:
Schade für mich: innerText gibt nicht den Text zurück, den ich mir erhofft hatte. Es sind noch alle HTML-Tags enthalten.
hast du vielleicht versehentlich innerHTML verwendet? innerText enthält definitiv keine tags mehr. Erwähnenswert ist noch, dass bei Verwendung von innerText Texte aus Elementen mit div Charakter durch cr/lf getrennt werden, Texte aus Elementen mit span Charakter werden ohne Separator geliefert. So kann es passieren, dass per CSS räumlich getrennte Texte verkettet werden. Das ist kein Fehler, sondern ein semantisches Problem.

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
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: (angezeigten) Text einer HTML-Quelle ermitteln

  Alt 31. Jul 2005, 15:04
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#17

Re: (angezeigten) Text einer HTML-Quelle ermitteln

  Alt 31. Jul 2005, 19:29
@marabu:

Ui. Es war gestern wahrscheinlich doch schon etwas spät... Hatte wirklich innerHTML, und nicht innerText verwendet. Ich habe es korrigiert - und auch kein HTML mehr. 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? 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
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: (angezeigten) Text einer HTML-Quelle ermitteln

  Alt 31. Jul 2005, 19:54
XPath: http://www.w3schools.com/xpath/default.asp

Es ist im Wesentlichen eine Sprache zum Adressieren von Knoten eines XML-Dokumentes.

Und als Parser könntest du z.B. MSXML einsetzen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#19

Re: (angezeigten) Text einer HTML-Quelle ermitteln

  Alt 31. Jul 2005, 20:21
XPath hab ich verstanden. Für die Mitlesenden: Ich habe meine Informationen im wesentlichen hier gefunden: XPath Syntax im XPath Tutorial. Danke Chewie.

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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#20

Re: (angezeigten) Text einer HTML-Quelle ermitteln

  Alt 31. Jul 2005, 20:57
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 12:22 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