![]() |
Alle Image-Links aus HTML-String extrahieren (schnell)?
Hallo! Was ist die SCHNELLSTE Möglichkeit, um aus einem HTML-Dokument alle Image-Links zu extrahieren? Dabei sollten automatisch auch relative Links verabsolutiert und andere Winkelzüge umschifft werden.
|
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Ein HTML-Parser, der die Syntax komplett kennt.
Und dann natürlich noch JavaScript ausführen/analysieren. Oder man geht den legalen Weg und sucht sich eine ensprechende Schnittstelle zu den gwünschten Daten. |
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Mhm, kannst du mir bitte erklären, was du damit meinst? Danke.
|
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Hm, ich kenne eine Möglichkeit, sie ist auch schnell, glaube ich, aber definitiv nicht die Schnellste. Somit fühle ich mich nicht angesprochen. Ich gehe nun schlafen.
|
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Ich glaube, manchmal sind die einfachsten Lösungen oft die besten. Ich entferne einfach alle Zeilenumbrüche und wende dann einen regulären Ausdruck an, um alle Image-Links zu finden:
Delphi-Quellcode:
function RemoveChars(const S, Chars: string): string; // Chars CaseSensitive;
// http://www.delphipraxis.net/184473-schnellstes-entfernen-von-chars-aus-einem-string-4.html var I, Index: integer; Skip: array [Char] of boolean; begin FillChar(Skip[#0], Length(Skip) * SizeOf(Skip[#0]), 0); for I := 1 to Length(Chars) do Skip[Chars[I]] := true; SetLength(Result, Length(S)); index := 0; for I := 1 to Length(S) do if not Skip[S[I]] then begin Inc(index); Result[index] := S[I]; end; SetLength(Result, index); end; procedure TForm1.btnTestClick(Sender: TObject); var S, L: string; ThisImageLinksRegexObj: TRegEx; AllImageLinks: TMatchCollection; I: integer; begin S := TFile.ReadAllText('R:\Clipboard Text.txt'); S := RemoveChars(S, #10#13); ThisImageLinksRegexObj := TRegEx.Create('https?://\S+\.(png|jpg|gif|bmp|jpeg|jpe|jp2|tiff|tif)', [roIgnoreCase]); AllImageLinks := ThisImageLinksRegexObj.Matches(S); if AllImageLinks.Count > 0 then begin for I := 0 to AllImageLinks.Count - 1 do begin L := AllImageLinks[I].Value; CodeSite.Send('AllImageLinks[i]', L); end; end else begin CodeSite.Send('Keine Image-Links gefunden'); end; end; |
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Das findet aber nur absolute Links
|
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Zitat:
![]() |
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Zitat:
|
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Zitat:
Darum ist eine RegEx-Suche für so ein Anliegen einfach das falsche Werkzeug oder die Aufgabenstellung ist eine völlig andere. |
AW: Alle Image-Links aus HTML-String extrahieren (schnell)?
Nun gut, Regex ist das falsche Werkzeug, ihr habt mich überzeugt.
Aber bitte, wo gibt es einen HTML-Parser, der das kann? Ich habe bei Google gesucht, aber nichts gefunden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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 by Thomas Breitkreuz