AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Alle Image-Links aus HTML-String extrahieren (schnell)?
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Image-Links aus HTML-String extrahieren (schnell)?

Ein Thema von PeterPanino · begonnen am 13. Apr 2015 · letzter Beitrag vom 14. Apr 2015
Antwort Antwort
Seite 1 von 3  1 23      
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#1

Alle Image-Links aus HTML-String extrahieren (schnell)?

  Alt 13. Apr 2015, 01:01
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.

Geändert von PeterPanino (13. Apr 2015 um 01:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#2

AW: Alle Image-Links aus HTML-String extrahieren (schnell)?

  Alt 13. Apr 2015, 01:10
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Alle Image-Links aus HTML-String extrahieren (schnell)?

  Alt 13. Apr 2015, 01:28
Mhm, kannst du mir bitte erklären, was du damit meinst? Danke.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Alle Image-Links aus HTML-String extrahieren (schnell)?

  Alt 13. Apr 2015, 02:10
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.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Alle Image-Links aus HTML-String extrahieren (schnell)?

  Alt 13. Apr 2015, 08:56
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;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Alle Image-Links aus HTML-String extrahieren (schnell)?

  Alt 13. Apr 2015, 09:13
Das findet aber nur absolute Links
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Alle Image-Links aus HTML-String extrahieren (schnell)?

  Alt 13. Apr 2015, 09:16
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:
http://stackoverflow.com/a/1732454/1431618
Uli Gerhardt
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Alle Image-Links aus HTML-String extrahieren (schnell)?

  Alt 13. Apr 2015, 09:20
Das findet aber nur absolute Links
Ja, du hast recht.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Alle Image-Links aus HTML-String extrahieren (schnell)?

  Alt 13. Apr 2015, 09:20
Das findet aber nur absolute Links
Damit werden auch keine Image-Links gefunden sondern nur Text-Stellen die dem Muster entsprechen. Und das ist etwas völlig anderes.

Darum ist eine RegEx-Suche für so ein Anliegen einfach das falsche Werkzeug oder die Aufgabenstellung ist eine völlig andere.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Alle Image-Links aus HTML-String extrahieren (schnell)?

  Alt 13. Apr 2015, 09:40
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      

 

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 17:23 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