Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Textteile aus HTML Code extrahieren (https://www.delphipraxis.net/88029-textteile-aus-html-code-extrahieren.html)

delphinia 9. Mär 2007 01:59


Textteile aus HTML Code extrahieren
 
Gibt es gute Funcktionen irgendwo
mit denenman effektiv einfach nur angeben kann zb
Das wort zwischen "<td class="fett" width="40" align="left">"
und
"</td>"


In ein String stecken?

sexmagic 9. Mär 2007 11:41

Re: Textteile aus HTML Code extrahieren
 
Also ich hab das vor kurzem auch requested, leider hab ich keine wirkliche Hilfe erhalten, habe nach langem dann selbst einen Weg gefunden.

Ich habe es mit der Komponente TPerlRegex gemacht, diese ist kostenlos und bekommst du hier: TPerlRegEx

Mit dieser Komponente kannst du dir einen passenden reg. ausdruck erstellen und somit alles rausparsen.

Hier ein Beispiel wie ichs gemacht habe:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  imgpos: integer;
begin
  Memo1.Clear;
  Memo2.Clear;

  i := 0;
  Memo1.Lines.LoadFromFile(Edit1.Text);
  Memo1.Text := StringReplace(Memo1.Text, #13#10, '', [rfReplaceAll]);

  for i := 0 to Memo1.Lines.Count - 1 do
  begin
    PerlRegEx1.Subject := Memo1.Lines[i];
    PerlRegEx1.RegEx := 'valign="top".*</td>';
    if PerlRegEx1.Match then
      Memo2.Lines.Add( Trim(PerlRegEx1.MatchedExpression) );
      while PerlRegEx1.MatchAgain do
       begin
         Memo2.Lines.Add( Trim(PerlRegEx1.MatchedExpression) );
       end;
  end;

  Memo2.Text := StringReplace(Memo2.Text, 'valign="top">', '', [rfReplaceAll]);
  Memo2.Text := StringReplace(Memo2.Text, '</td>', '', [rfReplaceAll]);
  Memo2.Text := StringReplace(Memo2.Text, '</span>', '', [rfReplaceAll]);
  Memo2.Text := StringReplace(Memo2.Text, '<hr>', '', [rfReplaceAll]);
  Memo2.Text := StringReplace(Memo2.Text, '
', '', [rfReplaceAll]);

  for i := Memo2.Lines.Count - 1 downto 0 do
  begin
    if Trim(Memo2.Lines[i]) = '' then
      Memo2.Lines.Delete(i);
    Memo2.Lines[i] := Trim(Memo2.Lines[i]);
  end;
 end;
Mann könnte sagen, Schuster bleib bei deinen Leisten :) aber ich bin froh das ichs überhaupt hinbekommen habe.

Eine andere Möglichkeit wäre du besorgst dir eine HTML Parser Komponente, aber da musst du erst eine finden die Kostenlos ist und das kann was du willst, ich habe die Hier ausprobiert und finde die funzt ganz gut DIHtmlParser

Ich hoffe das hilft dir weiter!

greez

cruiser 9. Mär 2007 12:43

Re: Textteile aus HTML Code extrahieren
 
Regular Expressions fallen mir da auch sofort ein... aaaallerdings ist bei TPerlRegExpr nich ne DLL dabei? Die hier kann das nativ und die Doku ist auch nich schlecht: TRegExpr

Eine weitere Möglichkeit wär das Arbeiten mit PosEx und Copy

SirThornberry 9. Mär 2007 13:31

Re: Textteile aus HTML Code extrahieren
 
das einfachste ist mit "pos" nach "<td class="fett" width="40" align="left">" zu suchen und dann ab der Fundstelle nach "</td>" zu suchen. Dann mit "copy" einfach den Teil zwischen den Fundstellen in einen neuen String kopieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:33 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