AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Der hier z.B. soll es laut Autor wohl können. Evtl. auch interessant: http://sourceforge.net/projects/htmlp/. Und das sind nur 2 der ersten Treffer, die ich unter delphi html parser gefunden habe.
|
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
DIHTMLParser ist für meinen Zweck zwar ein überdimensioniertes Monster, aber es löst relative Links mit Hilfe seines Links-Plugins auf.
|
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Schade, dass ich den Thread erst jetzt gesehen habe. Ich schreibe morgen mal nen kleinen Parser - hab in letzter Zeit ziemlich oft damit zu tun, ist ein spannendes Gebiet :)
|
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Liste der Anhänge anzeigen (Anzahl: 2)
Ok, konnte es doch nicht sein lassen und habs schon jetzt gemacht ^^
Bild und Projekt ist angehängt, und die Parszeit ist minimal (0.001s - zusehen im Titel vom Fenster) Hier die Klasse:
Delphi-Quellcode:
Benutzen kannst du sie so:
unit ImgPathParser;
interface uses Classes, SysUtils; type TImgPathParser = class private function FGetImgPath(Index : integer) : string; function FGetCount : integer; public ImgPaths : TStringList; procedure Parse(AHTML : string); property Count : Integer read FGetCount; property ImgPath[Index : integer] : string Read FGetImgPath; end; var RealativeLink : string = 'http://www.delphipraxis.net/'; // Um einen Relativen Link generieren zu können. implementation { TImagPathParser } function TImgPathParser.FGetCount: integer; begin Result := ImgPaths.Count; end; function TImgPathParser.FGetImgPath(Index: integer): string; begin Result := ImgPaths[Index]; end; procedure TImgPathParser.Parse(AHTML: string); var CurrentCharIndex: Integer; CurrentChar : Char; InString : Boolean; Buffer : string; Extension : string; begin Buffer := ''; InString := false; ImgPaths := TStringList.Create; for CurrentCharIndex := 1 to Length(AHTML) do begin CurrentChar := AHTML[CurrentCharIndex]; if (not InString) and (CurrentChar = '"') then begin InString := true; Continue; end; if InString then begin if CurrentChar = '"' then begin Extension := LowerCase(Copy(Buffer, Length(Buffer)-2,3)); // !!! EXTENSIONS !!! if (Extension = 'png') or (Extension = 'gif') or (Extension = 'jpg') or (LowerCase(Copy(Buffer, Length(Buffer)-3,4)) = 'jpeg') then begin if Copy(Buffer, 0, 7) <> 'http://' then Buffer := RealativeLink + Buffer; ImgPaths.Add(Buffer); end; InString := false; Buffer := ''; Continue; end; Buffer := Buffer + CurrentChar; end; end; end; end.
Delphi-Quellcode:
Hoffe, das ist in etwa so wie du es brauchst :)
procedure TForm1.btn1Click(Sender: TObject);
var StartTime : TDateTime; begin StartTime := Now; ImgPaths.Parse(mmo1.Text); Text := FloatToStr(MilliSecondsBetween(Now,StartTime) / 1000) + 's'; end; Freundliche Grüsse |
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Das ist kein Parser. Das ist ein "irgendwas-mit-http-vorne-und-jpg-gif-tif-jpeg-hinten-string-extrakt-o-mat'. Der Schleife ist es vollkommen egal, wo sich dieser String befindet.
Allerdings dürfte das trotzdem für die weitaus meisten Anwendungsfälle reichen. Zuverlässig ist das aber nicht. |
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Vielen Dank an Milos für seine Idee.
Ein anderer Ansatz: Web-Browser sind doch die besten HTML-Parser, die man sich vorstellen kann. Ist es nicht möglich, die Parsing-Engine eines Web-Browsers für einen beliebigen speziellen Zweck einzusetzen? Gibt es dafür ein Interface? |
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Zitat:
IHTMLDocument oder IHTMLDocument oder die neuere Variante IHTMLDocument2 Allerdings ist das nicht wirklich das Schnellste, aber das Zuverlässigste. Evtl. solltest du die Fragen demnächst anders stellen ;) Eine generelle Regel der Programmierung besagt Zitat:
|
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Nee, das Schnellste und auch das Zuverlässigste hatte ich bereits in #2 genannt (siehe Oder), aber da hört ja niemals jemand drauf.
|
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Zitat:
Zitat:
Zitat:
|
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Diese Frage wurde doch von den Anderen schon beantwortet. :stupid:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:15 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