Zurück zum Blog
Die Wissenschaft des Web-Scrapings
Suciu DanLast updated on Mar 31, 202610 min read

Web-Scraping leicht gemacht: Die Bedeutung der Datenauswertung

Web-Scraping leicht gemacht: Die Bedeutung der Datenauswertung

Datenparsing ist der Prozess der Analyse und Umwandlung strukturierter oder unstrukturierter Daten in ein spezifischeres Format, das von verschiedenen Softwaresystemen genutzt und verstanden werden kann.

Um dieses Konzept besser verständlich zu machen, hier einige Beispiele für Parser:

  • CSV-Parser: zum Parsen und Konvertieren von CSV-Dateien (Comma Separated Values) in besser nutzbare Formate
  • JSON-Parser: zum Parsen und Konvertieren von JSON-Daten (JavaScript Object Notation) in besser nutzbare Formate
  • Regex-Parser: zum Parsen und Extrahieren bestimmter Textmuster mithilfe regulärer Ausdrücke
  • Compiler: zum Parsen und Konvertieren von Code, der in einer Programmiersprache geschrieben ist, in maschinenlesbaren Code in einer anderen Programmiersprache
  • SQL-Parser: zum Analysieren und Interpretieren einer SQL-Abfrage, zum Ausführen des Befehls und zum Zurückgeben der Ergebnisse

Beim Web Scraping ist das Parsen von Daten unerlässlich. Websites bestehen aus HTML, einer hervorragenden Auszeichnungssprache zur Darstellung von Informationen auf einem Bildschirm, die für Maschinen jedoch nicht so gut lesbar ist.

Wenn wir eine Website scrapen, erfassen wir eine große HTML-Zeichenkette. Um diese Informationen sinnvoll nutzen zu können, müssen wir sie analysieren.

Hier werden die Bedeutung des Daten-Parsings beim Web-Scraping sowie die verschiedenen Arten von Daten-Parsern behandelt, darunter HTML-Parsing-Bibliotheken für verschiedene Programmiersprachen, reguläre Ausdrücke und die Erstellung eines eigenen Parsers.

Erstellen eines Daten-Parsers

Ein guter Datenparser kann relevante Informationen aus einem HTML-Dokument auf der Grundlage vordefinierter Regeln extrahieren, unabhängig vom verwendeten Parsertyp. Der Parsing-Prozess besteht aus zwei Hauptschritten: lexikalische Analyse und syntaktische Analyse.

Die lexikalische Analyse ist der Prozess, bei dem einzelne Wörter und Symbole in einem Dokument analysiert und in kleinere, besser handhabbare Einheiten zerlegt werden.

Dies beinhaltet die Tokenisierung, also den Prozess, bei dem ein Dokument in einzelne Token wie Schlüsselwörter, Symbole und Zahlen zerlegt wird.

Sehen wir uns dieses einfache HTML-Dokument einmal an:

<html>

  <head>

	<title>Scraping</title>

  </head>

  <body>

	<h1>Welcome to my scraping page</h1>

	<p>This is a paragraph.</p>

	<ul>

  	<li>First Scraping Item</li>

  	<li>Second Scraping Item</li>

	</ul>

  </body>

</html>

Der Prozess der lexikalischen Analyse würde dieses Dokument in einzelne Elemente wie die folgenden tokenisieren:

  • `<html>`
  • `<head>`
  • `<title>`
  • `Scraping`
  • `</title>`
  • `<body>`
  • `<h1>`
  • `Willkommen auf meiner Scraping-Seite`
  • `</h1>`
  • [...]
  • `</body>`
  • `</html>`

Auf diese Weise wird jedes Element des HTML-Dokuments in kleinere, besser handhabbare Token zerlegt, die weiter analysiert und verarbeitet werden können.

Die syntaktische Analyse ist der Prozess, bei dem die Struktur eines Dokuments analysiert und ermittelt wird, wie die einzelnen Token zueinander in Beziehung stehen. Dazu gehören das Erkennen von Mustern und Strukturen in den Daten sowie die Verwendung dieser Informationen zur Erstellung einer baumartigen Struktur, die als Parse-Baum bezeichnet wird.

Beispielsweise ist das <html>-Tag das Stammelement und enthält die Elemente <head> und <body>. Innerhalb des <head>-Elements befindet sich ein <title>-Element, und innerhalb des <body>-Elements befinden sich die Elemente <h1>, <p> und <a>.

Durch die Identifizierung dieser Elemente und ihrer Beziehungen können Sie einen Parsebaum erstellen, mit dem Element <html> als Wurzel, <head> und <body> als dessen untergeordneten Elementen und so weiter.

Sie können den Parsebaum verwenden, um bestimmte Daten aus dem HTML-Dokument zu extrahieren, wie beispielsweise den Text innerhalb des Elements <title> oder das href-Attribut des Elements <a>.

Die besten HTML-Parsing-Bibliotheken

In diesem Abschnitt werden wir einige der beliebtesten HTML-Parsing-Bibliotheken für verschiedene Programmiersprachen vorstellen. Diese Bibliotheken erleichtern das Extrahieren strukturierter Daten aus einem HTML-Dokument und können ein guter Ausgangspunkt für Ihr Web-Scraping-Projekt sein.

Von Scrapy und BeautifulSoup für Python über Cheerio für NodeJS bis hin zu JSoup für Java werden wir uns jede Bibliothek ansehen und Beispiele für deren Verwendung geben.

Egal, ob Sie Anfänger oder erfahrener Entwickler sind – dieser Abschnitt vermittelt Ihnen ein solides Verständnis der Möglichkeiten, die Ihnen bei der Arbeit mit HTML-Daten zur Verfügung stehen.

Los geht’s!

Cheerio

Cheerio ist eine JavaScript-Bibliothek, mit der Entwickler das DOM eines HTML- oder XML-Dokuments analysieren, bearbeiten und durchlaufen können, ähnlich wie bei jQuery. Dieser Artikel geht viel detaillierter auf Cheerio ein und behandelt verschiedene Anwendungsfälle.

Hier ist eine einfache Cheerio-Implementierung:

const cheerio = require('cheerio');

const $ = cheerio.load('<h2 class="title">Hello, World!</h2>');

console.log($('h2').text())

Die Ausführung dieses Codes liefert die folgende Ausgabe:

Hello, World!

Scrapy und BeautifulSoup

Scrapy und BeautifulSoup sind Bibliotheken für Web-Scraping in Python.

Scrapy ist ein leistungsstarkes Web-Scraping-Framework, mit dem Sie strukturierte Daten mithilfe von Selektoren oder XPath-Ausdrücken aus Websites extrahieren können.

Hier ist ein einfaches Scrapy-Beispiel:

import scrapy

class QuotesSpider(scrapy.Spider):

    name = "quotes"

    def start_requests(self):

        urls = [

            'https://quotes.toscrape.com/page/1/',

            'https://quotes.toscrape.com/page/2/',

        ]

        for url in urls:

            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):

        page = response.url.split("/")[-2]

        filename = f'quotes-{page}.html'

        with open(filename, 'wb') as f:

            f.write(response.body)

        self.log(f'Saved file {filename}')

Sie können den Code mit diesem Befehl ausführen:

scrapy crawl quotes

BeautifulSoup ist eine Bibliothek, mit der Sie HTML- und XML-Dokumente analysieren und Daten daraus extrahieren können, ähnlich wie es ein Webbrowser tut.

Hier ist eine einfache BeautifulSoup-Implementierung:

from bs4 import BeautifulSoup

html_doc = """<html><head><title>Scraper</title></head>

<body>

<h1 class="title">Hello, World!</h1>

</body>"""

soup = BeautifulSoup(html_doc, 'html.parser')

print(soup.title.string)

Beide Bibliotheken bieten eine einfache und praktische API zum Durchlaufen, Suchen und Ändern des Inhalts von Webseiten und eignen sich perfekt für Web-Scraping-Projekte.

JSoup

Wenn Ihre bevorzugte Programmiersprache Java ist, ist JSoup ein Datenparser, der eine praktische API zum Extrahieren und Bearbeiten von Daten bietet und dabei das Beste aus DOM, CSS und jQuery-ähnlichen Methoden nutzt.

Dies ermöglicht es Ihnen, HTML-Dokumente zu parsen und zu durchsuchen sowie den Inhalt eines Dokuments mithilfe einer einfachen, intuitiven API zu ändern. Die Bibliothek eignet sich perfekt für Web-Scraping-, Web-Crawling- und Datenextraktionsprojekte.

Hier ist eine einfache Implementierung von JSoup zum Extrahieren des Textes aus dem Title-Tag:

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

public class JSoupExample {

	public static void main(String[] args) {

    	String html = "<html><head><title>Example Title</title></head>"

            	+ "<body>Hello, World!</body></html>";

    	Document doc = Jsoup.parse(html);

    	// Get the title of the document

    	String title = doc.title();

    	System.out.println("Title: " + title);

	}

}

Nokogiri

Nokogiri ist eine Bibliothek für Ruby, die eine benutzerfreundliche Schnittstelle zum Parsen und Durchsuchen von XML- und HTML-Dokumenten bietet und XPath- sowie CSS-Selektoren unterstützt, wodurch sie für Web-Scraping- und Datenextraktionsaufgaben eingesetzt wird.

Eine umfassendere Analyse der Datenparser-Bibliotheken im Ruby-Ökosystem finden Sie in diesem Artikel.

Verwenden Sie diesen Befehl, um das Nokogiri-Gem zu installieren:

gem install nokogiri

Das folgende Codebeispiel ist eine einfache Nokogiri-Implementierung:

require "nokogiri"

html = "<!DOCTYPE html><html><head><title>Hello, World!</title></head><body>Hello, World!</body></html>"

parsed_data = Nokogiri::HTML.parse(html)

puts parsed_data.title

Reguläre Ausdrücke

Reguläre Ausdrücke, auch als Regex bekannt, sind ein leistungsstarkes Werkzeug zum Abgleichen von Mustern in Zeichenfolgen. Sie werden häufig für Textverarbeitungsaufgaben wie das Suchen, Validieren und Extrahieren von Informationen aus einem Dokument verwendet.

Sie können reguläre Ausdrücke verwenden, um Informationen aus HTML zu extrahieren, indem Sie nach bestimmten Mustern suchen, beispielsweise um E-Mail-Adressen oder Überschriften aus einem HTML-Dokument zu extrahieren.

Um beispielsweise alle URLs aus einem HTML-Dokument zu extrahieren, können Sie den folgenden regulären Ausdruck verwenden:

/https?:\/\/[\w\.-]+\.[a-z]+/gi

Dieser Ausdruck findet jede Zeichenfolge, die mit „http“ oder „https“ beginnt, gefolgt von einem „:“ und zwei Schrägstrichen, dann einer beliebigen Kombination aus Wortzeichen, Punkten und Bindestrichen, gefolgt von einem Punkt und einem oder mehreren Kleinbuchstaben. Das Flag „gi“ macht die Suche global und groß-/kleinschreibungsunabhängig.

Die Verwendung regulärer Ausdrücke kann etwas knifflig sein, da die Syntax komplex sein kann und es einiger Versuche bedürfen kann, bis das Muster genau richtig ist. Es gibt auch einige Websites wie Regex101 oder Rubular, die dir beim Testen und Debuggen deiner regulären Ausdrücke helfen können.

Wenn du die verfügbaren Bibliotheken oder regulären Ausdrücke nicht verwenden möchtest, kannst du jederzeit deinen eigenen Parser erstellen.

Das Erstellen eines eigenen Parsers kann eine hervorragende Möglichkeit sein, ein tieferes Verständnis für die Daten zu erlangen, mit denen du arbeitest, und ist auch eine gute Option, wenn du spezifische Anforderungen hast, die von bestehenden Bibliotheken oder Tools nicht erfüllt werden.

Einen Parser erstellen

Das Erstellen eines eigenen Parsers kann eine anspruchsvolle Aufgabe sein, aber auch sehr lohnend. Der Prozess der Parser-Erstellung umfasst die Erstellung einer Reihe von Regeln und Anweisungen, die festlegen, wie die Daten geparst und organisiert werden.

Dies können Sie mithilfe verschiedener Techniken tun, wie z. B. regulären Ausdrücken, Zustandsmaschinen und rekursivem Abwärtsparsing.

Bei der Erstellung eines Parsers ist es entscheidend, die Struktur und das Format der Daten genau zu verstehen, um einen geeigneten Satz von Regeln und Anweisungen für den Parser entwerfen zu können. Die Wahl einer geeigneten Programmiersprache ist ebenfalls ein wichtiger Aspekt.

Einer der Vorteile der eigenen Parser-Entwicklung besteht darin, dass Sie diesen genau auf die vorliegenden Daten und den jeweiligen Anwendungsfall zuschneiden können. Dies kann zu einem effizienteren und effektiveren Parser führen, verglichen mit der Verwendung einer generischen Bibliothek oder eines Tools.

Darüber hinaus kann die Erstellung eines eigenen Parsers eine wertvolle Lernerfahrung sein, da man dadurch ein tieferes Verständnis der zugrunde liegenden Konzepte und Techniken der Datenanalyse erlangt.

Die Entwicklung eines Parsers von Grund auf hat jedoch auch Nachteile:

  • Es kann zeitaufwändig sein und einen erheblichen Aufwand für die Konzeption und Implementierung erfordern, insbesondere wenn Sie mit Parsing-Algorithmen und Datenstrukturen nicht vertraut sind.
  • Es kann schwierig sein, die Leistung Ihres Parsers auf das Niveau bestehender Bibliotheken oder Tools zu bringen, die auf Leistung optimiert wurden.
  • Es kann schwierig sein, den Parser im Laufe der Zeit zu warten und zu aktualisieren, wenn sich das Datenformat oder die Datenstruktur ändert.
  • Es kann schwierig sein, Ihren Code zu debuggen oder Fehler zu finden, insbesondere wenn Sie mit dem Parsing-Prozess nicht vertraut sind.
  • Es könnte anfällig für Fehler und Bugs sein, was dazu führen könnte, dass der Parser nicht wie erwartet funktioniert.
  • Bei komplexen Parsing-Aufgaben könnte es schwierig sein, alle Regeln und Randfälle zu implementieren.
  • Er ist möglicherweise nicht so effizient wie bereits vorhandene Bibliotheken und Tools, da diese optimiert wurden und von vielen Menschen genutzt werden.

Zusammenfassend lässt sich sagen, dass die Entwicklung eines benutzerdefinierten Parsers von Grund auf eine Reihe von Nachteilen mit sich bringt, wie z. B. einen hohen Entwicklungsaufwand, hohe Wartungskosten und ein hohes Fehlerrisiko. Es wird allgemein empfohlen, vorhandene Bibliotheken oder Tools zu verwenden oder auf reguläre Ausdrücke zurückzugreifen, sofern diese die spezifischen Anforderungen Ihres Anwendungsfalls erfüllen.

Schema.org-Metadaten

Das Parsen von Schema.org-Metadaten ist eine Möglichkeit, strukturierte Daten mithilfe von Web-Schema-Standards aus Webseiten zu extrahieren. Die Community hinter Schema.org verwaltet diese Standards und fördert die Verwendung von Schemata für strukturierte Daten im Web.

Das Parsen von Schema-Metadaten kann aus verschiedenen Gründen nützlich sein, beispielsweise um aktuelle Informationen zu Veranstaltungen zu finden oder für Forscher, die Daten für Studien sammeln. Darüber hinaus können auch Websites, die Daten wie Immobilienanzeigen, Stellenangebote und Wettervorhersagen aggregieren, vom Parsen von Schema-Daten profitieren.

Es gibt verschiedene Schema-Formate, die Sie verwenden können, darunter JSON-LD, RDFa und Microdata.

JSON-LD (JavaScript Object Notation for Linked Data) ist ein Format zur Kodierung von Linked Data unter Verwendung von JSON. Die Gestaltung dieses Standards erleichtert das Lesen und Schreiben für Menschen sowie das Parsen und Generieren für Maschinen.

So würde JSON-LD für eine Webseite über ein Buch aussehen:

<script type="application/ld+json">

{

  "@context": "http://schema.org",

  "@type": "Book",

  "name": "The Adventures of Tom Sawyer",

  "author": "Mark Twain",

  "datePublished": "1876-12-01",

  "description": "The Adventures of Tom Sawyer is a novel about a young boy growing up along the Mississippi River in the mid-1800s. It is a classic of American literature and has been loved by generations of readers.",

  "publisher": "Penguin Books",

  "image": "https://www.example.com/images/tom_sawyer.jpg"

}

</script>

Die Empfehlung des World Wide Web Consortium (W3C) lautet RDFa (Resource Description Framework in Attributes) und dient dazu, RDF-Aussagen in XML und HTML einzubetten.

Unten sehen Sie, wie RDFa innerhalb einer HTML-Seite aussehen würde. Sie können erkennen, wie Tag-Attribute verwendet werden, um die zusätzlichen Daten zu speichern.

<!DOCTYPE html>

<html>

  <head>

    <title>RDFa Example</title>

  </head>

  <body>

    <div about="http://example.com/books/the-great-gatsby" typeof="schema:Book">

      <h1 property="schema:name">The Great Gatsby</h1>

      <div property="schema:author" typeof="schema:Person">

        <span property="schema:name">F. Scott Fitzgerald</span>

      </div>

      <div property="schema:review" typeof="schema:Review">

        <span property="schema:author" typeof="schema:Person">

          <span property="schema:name">John Doe</span>

        </span>

        <span property="schema:reviewBody">

          A classic novel that explores themes of wealth, love, and the decline of the American Dream.

        </span>

        <span property="schema:ratingValue">4.5</span>

      </div>

    </div>

  </body>

</html>

Microdata ist eine WHATWG-HTML-Spezifikation, die dazu dient, Metadaten in bestehende Inhalte auf Webseiten einzubetten, und die schema.org oder benutzerdefinierte Vokabulare verwenden kann.

Hier ist ein Beispiel für Microdata in HTML:

<div itemscope itemtype="http://schema.org/Product">

  <span itemprop="name">Shiny new gadget</span>

  <img itemprop="image" src="shinygadget.jpg" alt="A shiny new gadget" />

  <div itemprop="offerDetails" itemscope itemtype="http://schema.org/Offer">

    <span itemprop="price">$19.99</span>

    <link itemprop="availability" href="http://schema.org/InStock" />

  </div>

</div>

Es gibt viele Tools, um Schemata in verschiedenen Sprachen zu parsen, wie beispielsweise Extruct von Zyte und die RDFLib-Bibliothek, die es einfach machen, strukturierte Daten mithilfe von Web-Schema-Standards aus Webseiten zu extrahieren.

Premium-Parser

Bisher haben wir die Grundlagen des Daten-Parsings besprochen, einschließlich der zugrunde liegenden Konzepte der lexikalischen und syntaktischen Analyse. Wir haben außerdem verschiedene Open-Source-Bibliotheken für das Daten-Parsing, die Verwendung regulärer Ausdrücke, die Erstellung eines Parsers von Grund auf und das Parsen von Daten mithilfe von schema.org untersucht.

Sie können sich jederzeit auf einen Web-Parser wie die WebScrapingAPI, die SERP-API oder die Amazon-API verlassen. Diese Web-Parser ermöglichen es Ihnen, Daten in Echtzeit zu scrapen, ohne sich um Wartung, Code oder Infrastruktur kümmern zu müssen.

Die Verwendung eines Premium-Web-Parsers bietet mehrere Vorteile, darunter:

  • Zuverlässigkeit: Web-Parser sind im Allgemeinen stabiler und zuverlässiger als kostenlose oder Open-Source-Alternativen, die anfällig für Bugs und Fehler sein können.
  • Geschwindigkeit: Web-Parser sind auf Geschwindigkeit und Leistung optimiert, sodass Sie Daten schnell und effizient extrahieren können.
  • Skalierbarkeit: Web-Parser können große Datenmengen und hohen Datenverkehr bewältigen, wodurch sie sich für groß angelegte Scraping- und Datenextraktionsprojekte eignen.
  • Erweiterte Funktionen: Web-Parser verfügen oft über erweiterte Funktionen wie IP-Rotation, User-Agent-Spoofing und CAPTCHA-Lösung, die Ihnen helfen können, Anti-Scraping-Maßnahmen zu umgehen und auf gesperrte Websites zuzugreifen.
  • Support und Wartung: Web-Parser bieten Kundensupport und regelmäßige Software-Updates, sodass Sie stets Zugriff auf die neuesten Funktionen und Fehlerbehebungen haben.

Aber seien wir ehrlich: Premium-Web-Parser bringen nicht nur Vorteile mit sich. Hier sind einige Nachteile:

  • Kosten: Premium-Web-Parser können im Vergleich zu Open-Source-Optionen mit höheren Kosten verbunden sein
  • Eingeschränkte Anpassungsmöglichkeiten: Die Funktionalität eines Premium-Web-Parsers ist möglicherweise eingeschränkter als bei einem selbst erstellten Parser
  • Abhängigkeit vom Dienst: Wenn der Dienst ausfällt oder Probleme auftreten, kann dies Ihre Fähigkeit zum Parsen von Daten beeinträchtigen
  • Eingeschränkte Kontrolle über die Daten: Bei einem Premium-Web-Parser haben Sie möglicherweise weniger Kontrolle über die Daten, auf die Sie zugreifen und die Sie verarbeiten können
  • Abhängigkeit von den Datenquellen des Anbieters: Die Qualität und Relevanz der vom Premium-Web-Parser bereitgestellten Daten kann durch die Datenquellen des Anbieters eingeschränkt sein.

Fazit

Dieser Artikel bietet einen umfassenden Überblick über das Parsen von Daten, einschließlich des Parsing-Prozesses, verschiedener Arten von HTML-Parsing-Bibliotheken und der Verwendung von schema.org-Metadaten zur Verbesserung der Suchmaschinenoptimierung (SEO).

Außerdem haben wir die Vor- und Nachteile der Entwicklung eines benutzerdefinierten Parsers, der Verwendung regulärer Ausdrücke und der Nutzung bestehender Tools hervorgehoben.

Eine wichtige Erkenntnis ist, dass das Daten-Parsing ein entscheidender Schritt beim Web-Scraping und bei der Datenanalyse ist, da es Ihnen ermöglicht, Informationen auf nützliche Weise zu extrahieren und zu organisieren.

Um Ihnen den Einstieg zu erleichtern, können Sie unsere SERP-API ausprobieren, ein Premium-Web-Scraping-Tool, mit dem Sie ganz einfach Daten aus Suchmaschinen extrahieren können. Wenn Sie daran interessiert sind, es auszuprobieren, zögern Sie nicht, sich für unsere 14-tägige kostenlose Testversion anzumelden.

Über den Autor
Suciu Dan, Mitbegründer @ WebScrapingAPI
Suciu DanMitbegründer

Suciu Dan ist Mitbegründer von WebScrapingAPI und verfasst praxisorientierte, auf Entwickler zugeschnittene Anleitungen zu den Themen Web-Scraping mit Python, Web-Scraping mit Ruby und Proxy-Infrastruktur.

Los geht’s

Sind Sie bereit, Ihre Datenerfassung zu erweitern?

Schließen Sie sich den über 2.000 Unternehmen an, die WebScrapingAPI nutzen, um Webdaten im Unternehmensmaßstab ohne zusätzlichen Infrastrukturaufwand zu extrahieren.