Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi (angezeigten) Text einer HTML-Quelle ermitteln (https://www.delphipraxis.net/50741-angezeigten-text-einer-html-quelle-ermitteln.html)

Panthrax 30. Jul 2005 21:14


(angezeigten) Text einer HTML-Quelle ermitteln
 
Salut.

Wie kann ich aus HTML-Quelltext den Text herausfiltern, den ich mit Ctrl-A im Browser selektieren würde?

Sieht der HTML-Quelltext z.B. so aus:
XML-Code:
<html>
  <head>
    ...
  </head>
  <body>
    <h3>Überschrift</h3>
   

Hallo Welt!</p>
  <body>
</html>
Dann würde ich gern folgenden Text haben wollen:
Code:
Überschrift
Hallo Welt!
Das entspricht einem Ctrl-A, Ctrl-C im Browser und Ctrl-V im Editor.

Wie kann ich den gleichen Ergebnistext mit Delphi ermitteln?

Ich habe bei den Delphi-Komponenten keine Eigenschaft Text oder ähnlich gefungen...

MfG
Panthrax

Neuni 30. Jul 2005 21:16

Re: (angezeigten) Text einer HTML-Quelle ermitteln
 
Alle "<" und ">" suchen, das dazwischen mit den "<>" löschen, und aus "
" einen zeilenumbruch machen. Wobei dann aber nicht zwischen GROßEN und kleinen Texten unterschieden wird.

Panthrax 30. Jul 2005 21:26

Re: (angezeigten) Text einer HTML-Quelle ermitteln
 
Danke für deine Antwort.

...aber die Lösung ist zu propitär. Sie berücksichtigt nicht, dass es Tags gibt die Text umschließen, der nicht angezeigt wird; Beispiele: Title, Script, Style, Frame, IFrame,...

MfG
Panthrax

marabu 30. Jul 2005 21:49

Re: (angezeigten) Text einer HTML-Quelle ermitteln
 
Hallo Panthrax,

versuche es mal so:

Delphi-Quellcode:
uses
  MSHTML;
var
  doc: IHTMLDocument2;
begin
  doc := WebBrowser.Document as IHTMLDocument2;
  ShowMessage(doc.body.innerText);
end;
Grüße vom marabu

Olli 30. Jul 2005 22:00

Re: (angezeigten) Text einer HTML-Quelle ermitteln
 
Wenn du es ohne die IE-Objekte machen willst, blieben da noch PCRE (Reguläre Ausdrücke). In der JCL gibt es dazu ein Beispiel. Ansonsten TPerlRegEx von http://www.regular-expressions.info/delphi.html

Code:
s/<(?:.??)>//gism
...

Panthrax 30. Jul 2005 22:19

Re: (angezeigten) Text einer HTML-Quelle ermitteln
 
Hallo.

@marabu:

Deine Lösung finde ich genau richtig. Leider löst jeder Zugriff auf das Interface Doc (Typ IHTMLDocument2) eine AV aus. Habe es auch mit Doc.title probiert - ebenfalls eine AV.

Die Unit MSHTML kannte ich bis eben nicht. Da das Neuland für mich ist muss ich nochmal fragen, woran könnte es liegen, es das zugehörige Objekt WebBrowser1.Document (= nil) nicht gibt?

[Edit]WebBrowser1.Navigate('http://abc.de'); wurde ausgeführt.[/Edit]


@Olli:

Danke für den Hinweis. Reguläre Ausdrücke könnte ich mir noch vorstellen. Obwohl dabei wieder das berücksichtigt werden müsste, was ich oben erwähnte.

MfG
Panthrax

Olli 30. Jul 2005 22:27

Re: (angezeigten) Text einer HTML-Quelle ermitteln
 
Ich glaube in dem Interface war ein Fehler (bzw. in der Unit). Ich melde mich nochmal, wenn ich mein Mailarchiv durchsucht habe.

marabu 30. Jul 2005 22:34

Re: (angezeigten) Text einer HTML-Quelle ermitteln
 
Panthrax, du schreibst du hättest das betreffende HTML-Dokument geladen. Wenn WebBrowser.Document nil ist, dann scheint mir der Ladevorgang zu dem Zeitpunkt noch nicht beendet zu sein, zu dem du deinen Zugriff machst. Hinweise darauf, wie du den richtigen Zeitpunkt abpassen kannst, erhältst du hier.

marabu

Olli 30. Jul 2005 22:39

Re: (angezeigten) Text einer HTML-Quelle ermitteln
 
Sorry, auch wenn ich noch nicht so alt bin hat mich meine Erinnerung getäuscht. Was ich meinte war das IDocHostUIHandler-Interface :-\

marabu 30. Jul 2005 22:50

Re: (angezeigten) Text einer HTML-Quelle ermitteln
 
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...

Heitere Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:34 Uhr.
Seite 1 von 3  1 23      

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