1. Home
  2. Misc IT
  3. Python
  4. Leere strong- und bold-Tags finden

Leere strong- und bold-Tags finden

Lesedauer: 4 Minuten

Bei einem SEO-Check Ihrer Website kann es sein, dass Sie aufgefordert werden, leere strong- und bold-Tags zu entfernen. Damit sind Textformatierungen ohne Text gemeint, die als solche natürlich schwer im Text zu finden sind. Um dies zu tun, muss der Code der Seite analysiert werden, was bei einer umfangreichen Seite sehr aufwendig sein kann.

Das folgende Python-Skript verwendet Scrapy, um eine Webseite nach leeren strong- und bold-Tags zu durchsuchen. Es crawlt die angegebenen URLs, extrahiert diese leeren Tags, speichert sie in einer Liste und gibt am Ende eine Zusammenfassung der gefundenen Stellen aus.

import scrapy

class MySpider(scrapy.Spider):
    name = "my_spider"
    # Verhindert das Folgen auf verlinkte Seiten
    allowed_domains = ['example.com']
    start_urls = ['https://example.com']

    # Eine Liste zur Speicherung der gefundenen Tags
    found_empty_tags = []

    def parse(self, response):
        # Crawling-Seite zur Debug-Ausgabe
        self.logger.info(f'Crawling page: {response.url}')

        # Überprüfen, ob die Antwort eine HTML-Seite ist
        if "text/html" in response.headers.get('Content-Type', b'').decode('utf-8'):
            # Überprüfen auf leere <strong> und <b> Tags
            empty_tags = response.xpath('//strong[not(normalize-space(.))] | //b[not(normalize-space(.))]')

            # Falls leere Tags gefunden werden, diese speichern
            if empty_tags:
                found_on_page = {
                    'url': response.url,
                    'empty_tags': [tag.get() for tag in empty_tags]
                }
                self.found_empty_tags.append(found_on_page)
                self.logger.info(f'Empty tags found: {found_on_page["empty_tags"]}')

        # Crawle alle weiteren Links auf der Seite
        for next_page in response.css('a::attr(href)').getall():
            if next_page is not None:
                yield response.follow(next_page, self.parse)

    # Zusammenfassung nach dem Abschluss des Crawlings
    def closed(self, reason):
        self.logger.info('Summary of empty tags found:')
        for entry in self.found_empty_tags:
            self.logger.info(f'URL: {entry["url"]}')
            self.logger.info(f'Empty tags: {entry["empty_tags"]}')

Scrapy ist ein leistungsfähiges Open-Source-Framework für die Datenextraktion aus Webseiten. Es ermöglicht das automatisierte Crawlen von Webseiten, die Extraktion von Daten und deren Strukturierung, was es ideal für Web Scraping macht. Scrapy bietet eine robuste Architektur mit Unterstützung für verteiltes Crawling, Datenpipelines und Fehlermanagement. Scrapy wurde in Python entwickelt und ermöglicht es Entwicklern, Spider zu erstellen, die Webseiten gezielt durchsuchen und bestimmte Inhalte wie Text, Bilder oder Metadaten sammeln.

Die Stellen, an denen die gesuchten Tags gefunden wurden, werden vor der Zusammenfassung der Statistik angezeigt:

2024-10-03 20:53:36 [my_spider] INFO: Summary of empty tags found:
2024-10-03 20:53:36 [my_spider] INFO: URL: https://example.com/sub/
2024-10-03 20:53:36 [my_spider] INFO: Empty tags: ['<strong> </strong>']

Anaconda-Navigator Umgebung für Scrapy einrichten

Mit der Anaconda-Distribution können verschiedene virtuelle Umgebungen erstellt werden, in denen unterschiedliche Versionen von Python oder Bibliotheken installiert sind. Dies ist besonders nützlich, wenn an mehreren Projekten mit unterschiedlichen Abhängigkeiten gearbeitet wird. Die in Anaconda oder Conda erstellten Umgebungen sind vom Betriebssystem isoliert. Das bedeutet, dass nachgeladene Bibliotheken und Pakete nur in der jeweiligen virtuellen Umgebung installiert werden und keine direkten Änderungen am Betriebssystem oder dessen globaler Python-Installation vornehmen.

Öffnen Sie Anaconda Navigator, navigieren Sie nach EnvironmentsCreate und vergeben Sie einen Namen für die Umgebung (z.B. Scrapy). Aktivieren Sie die Checkbox: Python und klicken Sie auf Create:

Klicken Sie auf die Schaltfläche Start ▹ und wählen Sie Open Terminal. Die Scrapy Umgebung wird in einer Konsole geladen. Installieren Sie das Scrapy Framework in der Umgebung mit folgendem Kommando:

$ conda install -c conda-forge scrapy

Das folgende Kommando erstellt ein neues Scrapy Projekt mit dem Namen web_crawler:

$ scrapy startproject web_crawler

Wechseln Sie in das Unterverzeichnis ./web_crawler/web_crawler/spiders und legen Sie dort ein Python-Script my_spider.py mit oben genannten Inhalt an. Passen Sie in den Zeilen 6 und 7 die gewünschte URL bzw. Domain an und führen Sie das Script aus:

$ scrapy crawl my_spider

Loading

Updated on 4. Oktober 2024
Was this article helpful?

Related Articles