Link (href) Extraktor

Fügen Sie HTML-Quellcode ein und extrahieren Sie jeden Link — alle href-URLs, dedupliziert und je Zeile eine, bereit zum Kopieren oder Herunterladen.

1.056 Aufrufe

So funktioniert es

Fügen Sie HTML-Quellcode ein — die Ausgabe von „Seitenquelltext anzeigen“, eine gespeicherte .html-Datei oder ein beliebiges kopiertes Snippet — und das Tool übergibt diesen Text nicht einer selbstgeschriebenen regulären Ausdruck (Regex), sondern direkt dem HTML-Parser des Browsers selbst. Dieser Unterschied ist wichtiger, als er klingt. Echtes HTML ist auf eine Weise unordentlich, an der ein naiver Regex scheitert: ein Attribut kann in doppelten Anführungszeichen, einfachen Anführungszeichen oder ganz ohne Anführungszeichen stehen (href=ueber-uns.html ist technisch gültiges HTML), ein Tag kann selbstschließend sein oder nicht, und Tags können viele Ebenen tief verschachtelt sein, sich über mehrere Zeilen erstrecken oder in Kommentaren und <script>-Blöcken stecken, die selbst spitze Klammern enthalten. Ein Parser auf Browser-Niveau hat zwei Jahrzehnte damit verbracht, jeden dieser Sonderfälle zu verarbeiten, weil er jede ihm übergebene Seite darstellen muss — egal wie fehlerhaft das Markup ist. Den Extraktor auf genau diese Engine zu bauen, statt das Mustererkennen für Tags neu zu erfinden, ist der Grund, warum er auch bei Markup zuverlässig funktioniert, das Sie nicht selbst verfasst haben — etwa eine gescrapte Konkurrenzseite oder ein alter Kampagnen-Export.

Sobald der Parser aus dem eingefügten Markup einen strukturellen Baum aufgebaut hat, wird der href-Wert jedes <a>-Elements direkt als Eigenschaft dieses Elements gelesen — nicht als roher Text aus einer Zeichenkette. Das umgeht bereits Tücken bei der Anführungszeichen-Behandlung und verirrte spitze Klammern in Kommentaren, die eine Mustererkennung sonst täuschen könnten. Die resultierende URL-Liste wird anschließend dedupliziert und je Zeile eine ausgegeben, bereit zum Kopieren in die Zwischenablage oder zum Herunterladen als reine Textdatei.

Konkretes Beispiel: Das HTML einer Seite enthält <a href='/preise'>, <a href="https://beispiel.de/blog"> und ein nacktes <a href=mailto:[email protected]> ganz ohne Anführungszeichen — drei unterschiedliche Zitierstile in drei Zeilen. Ein Regex, der auf href="..." ausgelegt ist, würde die einfach zitierte und die unzitierte Variante stillschweigend übersehen; der Parser liest alle drei identisch, weil sie für einen Browser schlicht Attributwerte sind — unabhängig davon, wie oder ob sie in Anführungszeichen stehen.

Was Sie wissen sollten

  • Relative URLs wie /preise oder ../blog/beitrag werden exakt so extrahiert, wie sie geschrieben stehen, nicht zu vollständigen https://...-Adressen aufgelöst. Um einen relativen Pfad in eine absolute URL umzuwandeln, muss die Basis-URL der Seite bekannt sein — normalerweise die Adresse, von der das HTML ursprünglich abgerufen wurde, oder ein expliziter <base>-Tag — und ein eingefügtes Snippet trägt keins von beidem von sich aus in sich.
  • Das Tool ruft niemals selbstständig eine URL ab; es liest ausschließlich das HTML, das Sie bereitstellen. Das ist eine bewusste Grenze: Die ausgehenden Links einer Seite auf diese Weise zu prüfen, erfordert überhaupt keine serverseitige Anfrage von dieser Website — nur von dem Browser, mit dem Sie den Quelltext ohnehin bereits angesehen oder gespeichert haben.
  • mailto:- und tel:-Links werden genau wie jeder andere href-Wert übernommen, da der Parser nicht nach Schema unterscheidet — alles, was in einem href-Attribut steht, zählt als listenswerter Link.

Häufig gestellte Fragen

Ruft es die Seite selbst ab, oder brauche ich das HTML?

Sie liefern das HTML — fügen Sie die Ausgabe von „Seitenquelltext anzeigen“, den Inhalt einer gespeicherten .html-Datei oder ein beliebiges HTML-Snippet ein. Das Tool ruft niemals selbstständig URLs ab (das würde eine Serveranfrage erfordern, die diese Seite nicht stellt).

Sind relative Links enthalten, und werden sie in vollständige URLs umgewandelt?

Relative Links (z. B. /ueber-uns oder ../seite.html) werden exakt so extrahiert, wie sie im Quelltext stehen, nie zu absoluten URLs aufgelöst. Das würde erfordern, die Basis-URL der Seite zu kennen — meist die Adresse, von der das HTML abgerufen wurde — und ein eingefügtes Snippet trägt das nicht von sich aus in sich.

Werden auch mailto:- und tel:-Links erfasst?

Ja — unabhängig vom Schema wird jeder href-Wert extrahiert, da der Parser das Attribut selbst liest, ohne nach Link-Art zu filtern.

Warum wird mit der DOM-Engine des Browsers statt mit Regex geparst — macht das wirklich einen Unterschied?

Am meisten bei unordentlichem, echtem HTML. Ein auf einen Zitierstil abgestimmter Regex (etwa doppelt zitiertes href="...") übersieht stillschweigend einfach zitierte oder unzitierte Attribute, selbstschließende Varianten und hrefs, die tief verschachtelt oder in fehlerhaftem Markup vergraben sind. Der DOM-Parser behandelt all das genauso, wie es ein Browser beim Rendern der Seite tun würde — weil es dieselbe zugrunde liegende Engine ist.

Erfasst es auch Links in minifiziertem oder stark fehlerhaftem HTML?

In fast allen Fällen ja. Browser sind darauf ausgelegt, Seiten darzustellen, die weit von perfekt formatiertem Markup entfernt sind — fehlende schließende Tags, uneinheitliche Verschachtelung, einzeiliges minifiziertes Markup — und genau dieselbe tolerante Verarbeitung gilt auch hier. Das ist genau der Vorteil gegenüber einem strengen Regex, der sauberes, wohlgeformtes Eingabeformat erwartet.

Kommentare

Noch keine Kommentare — schreiben Sie den ersten!

Ähnliche Tools