-> Inter-Data -> Blog -> Doppelte Linktexte auf Webseiten erkennen und optimieren

Doppelte Linktexte auf Webseiten erkennen und optimieren

Autor: Ronny Zimmermann

Warum doppelte Linktexte ein Problem sind

Eine gut strukturierte interne Verlinkung ist essenziell für die Benutzerfreundlichkeit und SEO-Performance einer Website. Wenn sich Linktexte wiederholen, kann das Suchmaschinen verwirren und die Keyword-Relevanz verwässern.

In diesem Beitrag zeige ich, wie du mit einem Python-Skript doppelte Linktexte auf deiner Website analysierst und optimierst.

Auswirkungen von doppelten Linktexten

Suchmaschinen nutzen Linktexte (Anchor-Texte), um den Inhalt einer verlinkten Seite zu verstehen. Wenn mehrere Links mit demselben Text auf gleiche oder unterschiedliche URLs verweisen, führt das zu:

  • schlechterer Navigation für Nutzer
  • unklarer Priorisierung für Suchmaschinen
  • negativer SEO-Auswirkung auf deine Seitenstruktur

Beispiel für schlechte Linktexte:

<a href="/produkte/">Mehr erfahren</a>  
<a href="/services/">Mehr erfahren</a>  
<a href="/kontakt/">Mehr erfahren</a>

Hier ist nicht ersichtlich, wohin die Links führen. Besser wäre eine genauere Beschreibung:

<a href="/produkte/">Unsere Produkte</a>  
<a href="/services/">Unsere Dienstleistungen</a>  
<a href="/kontakt/">Kontakt aufnehmen</a>

Das Python-Skript zur Analyse von Linktexten

Mit folgendem Skript kannst du deine Website analysieren. Es liest die Sitemap aus, überprüft jede Seite und listet doppelte Linktexte farblich markiert in der Konsole sowie in einer Log-Datei auf.

Installation und Nutzung

  1. Python 3 installieren
  2. Skript speichern als check_linktexts.py
  3. Ausführen mit:
python3 check_linktexts.py https://deineseite.de

Das Skript:

import requests
from bs4 import BeautifulSoup
from collections import Counter
import sys
import re

def get_sitemap_urls(base_url):
    possible_sitemaps = [
        f"{base_url.rstrip('/')}/sitemap.xml",
        f"{base_url.rstrip('/')}/sitemap_index.xml",
        f"{base_url.rstrip('/')}/sitemap/"
    ]
    
    for sitemap_url in possible_sitemaps:
        try:
            response = requests.get(sitemap_url)
            response.raise_for_status()
            soup = BeautifulSoup(response.text, 'xml')
            urls = [loc.text for loc in soup.find_all('loc')]
            if urls:
                return urls
        except requests.exceptions.RequestException as e:
            continue
    
    print("Keine gültige Sitemap gefunden.")
    return []

def clean_text(text):
    text = re.sub(r'\s+', ' ', text).strip()
    return text if text else None

def analyze_links(url):
    try:
        response = requests.get(url)
        response.raise_for_status()
    except requests.exceptions.RequestException as e:
        print(f"Fehler beim Abrufen der Webseite {url}: {e}")
        return {}
    
    soup = BeautifulSoup(response.text, 'html.parser')
    link_texts = [clean_text(a.get_text()) for a in soup.find_all('a')]
    link_texts = [text for text in link_texts if text]
    text_counts = Counter(link_texts)
    
    return {text: count for text, count in text_counts.items() if count > 1}

def main(base_url):
    log_file = "link_analysis.log"
    with open(log_file, "w", encoding="utf-8") as log:
        urls = get_sitemap_urls(base_url)
        if not urls:
            return
        
        for url in urls:
            duplicate_texts = analyze_links(url)
            if duplicate_texts:
                output = f"\nSeite: \033[4;93;44m{url}\033[0m\n"
                print(output)
                log.write(url + "\n")
                for text, count in duplicate_texts.items():
                    formatted_text = f"{text} (x{count})"
                    print(f"\033[93;44m{formatted_text}\033[0m")
                    log.write(formatted_text + "\n")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Bitte eine Basis-URL als Parameter angeben.")
    else:
        main(sys.argv[1])

Ergebnis

Nach der Analyse zeigt das Skript alle mehrfach verwendeten Linktexte farblich markiert an und speichert die Ergebnisse in einer Log-Datei.

Beispielausgabe:

Seite: https://deineseite.de/produkte/
Produkte (x4)
Angebote (x2)

Seite: https://deineseite.de/blog/
Mehr erfahren (x5)

Dies bedeutet, dass der Linktext „Mehr erfahren“ fünfmal vorkommt und optimiert werden sollte.

Fazit

Eine gute interne Verlinkung verbessert die Navigation und SEO. Dieses Skript hilft dir dabei, doppelte Linktexte zu erkennen und durch bessere Formulierungen zu ersetzen.

Hast du Fragen oder eigene Erfahrungen? Hinterlasse einen Kommentar!