Zurück zum Blog
Anleitungen
Sorin-Gabriel MaricaLast updated on Mar 31, 20265 min read

Ein Web-Scraper mit C# in nur wenigen Minuten!

Ein Web-Scraper mit C# in nur wenigen Minuten!

Die Bedeutung der Informationsbeschaffung ist seit jeher bekannt, und diejenigen, die sie zu ihrem Vorteil genutzt haben, sind erfolgreich gewesen.

Heute können wir das viel einfacher und schneller tun, indem wir ein Scraping-Tool nutzen, und es ist auch nicht schwer, einen eigenen Scraper zu erstellen. Die Möglichkeit, schneller Leads zu sammeln, sowohl die Konkurrenz als auch die eigene Marke im Auge zu behalten und mehr zu erfahren, bevor man in Ideen investiert, liegt Ihnen direkt zur Hand.

Das wusstest du vielleicht schon.

Wenn Sie mehr über Web-Scraping erfahren oder wissen möchten, wie Sie Ihr Tool in C# erstellen können, sollten Sie dabei sein!

Nun, es ist legal, solange die Website, die Sie scrapen möchten, damit einverstanden ist. Sie können dies überprüfen, indem Sie „/robots.txt“ an die URL-Adresse anhängen, etwa so: http://httpbin.org/robots.txt, und die Berechtigungen lesen, oder indem Sie den Abschnitt „Nutzungsbedingungen“ durchsehen.

Was ist Web-Scraping mit C#?

Web-Scraping ist eine automatisierte Technik, die von Unternehmen jeder Größe genutzt wird, um Daten für verschiedene Zwecke zu extrahieren, wie beispielsweise Preisoptimierung oder das Sammeln von E-Mail-Adressen. Forscher nutzen Web-Scraping, um Datenberichte und Statistiken zu sammeln, und Entwickler erhalten große Datenmengen für maschinelles Lernen. 

Wie funktioniert es? Nun, bei den meisten Web-Scraping-Tools müssen Sie lediglich die URL der Website angeben, von der Sie Daten extrahieren möchten. Je nach den Fähigkeiten des Scrapers extrahiert dieser die Informationen dieser Webseite in strukturierter Form, sodass Sie sie nach Belieben analysieren und bearbeiten können. 

Beachten Sie, dass manche Scraper nur den HTML-Inhalt einer Seite auswerten, um die Informationen einer dynamischen Webseite zu erfassen. In diesem Fall ist ein ausgefeilteres Web-Scraping-Tool erforderlich, um die Aufgabe zu bewältigen.

Die Verwendung eines Web-Scrapers ist sehr nützlich, da sie den Zeitaufwand für diese Aufgabe erheblich reduzieren kann. Das manuelle Kopieren und Einfügen von Daten klingt nicht gerade nach einer Aufgabe, die man gerne immer wieder macht. Überlegen Sie einmal, wie viel Zeit es kosten würde, riesige Datenmengen für das Training einer KI zu beschaffen! Wenn Sie mehr darüber erfahren möchten, warum Datenextraktion nützlich ist, schauen Sie doch mal hier vorbei!  

Schauen wir uns an, wie wir unser Web-Scraping-Tool in nur wenigen Minuten erstellen können.

Erstellen eines eigenen Web-Scrapers in C#

In diesem Tutorial zeige ich dir, wie ein Web-Scraper in C# geschrieben werden kann. Ich weiß, dass die Verwendung einer anderen Programmiersprache wie Python für diese Aufgabe vorteilhafter sein kann, aber das bedeutet nicht, dass es unmöglich ist, dies in C# zu tun. 

Das Programmieren in C# hat seine Vorteile, zum Beispiel:

  • Es ist objektorientiert;
  • Bessere Integrität und Interoperabilität;
  • Es ist plattformübergreifend;

1. Auswahl der Seite, die du scrapen möchtest

Zunächst müssen Sie entscheiden, welche Webseite Sie scrapen möchten. In diesem Beispiel werde ich den Eintrag zu Griechenland auf Wikipedia scrapen und sehen, welche Themen im Inhaltsverzeichnis aufgeführt sind. Dies ist ein einfaches Beispiel, aber Sie können es auch auf andere Webseiten übertragen.

2. Den Code der Website untersuchen

Mithilfe der Entwicklertools können Sie jedes Element untersuchen, um zu überprüfen, unter welchem Tag sich die benötigten Informationen befinden. Klicken Sie einfach mit der rechten Maustaste auf die Webseite und wählen Sie „Untersuchen“ aus; daraufhin erscheint ein „Browser-Inspektor-Fenster“.

Sie können direkt im Elementbereich nach der Klasse suchen oder das Inspektionswerkzeug auf der Webseite verwenden, wie unten gezeigt.

So haben Sie herausgefunden, dass sich die benötigten Daten innerhalb des span-Tags mit der Klasse toctext befinden. Als Nächstes extrahieren Sie den gesamten HTML-Code der Seite, analysieren ihn und wählen nur die Daten innerhalb dieser spezifischen Klasse aus. Lassen Sie uns zunächst einige kurze Vorbereitungen treffen!

3. Arbeitsbereich vorbereiten

Sie können jede IDE verwenden, mit der Sie gut zurechtkommen. In diesem Beispiel verwende ich Visual Studio Code. Außerdem müssen Sie das .NET SDK installieren.

Nun müssen Sie Ihr Projekt erstellen. Dazu müssen Sie natürlich Visual Studio Code öffnen. Gehen Sie dann zum Erweiterungsmenü und installieren Sie C# für Visual Studio Code.

Sie benötigen einen Ort, an dem Sie unseren Code schreiben und ausführen können. Wählen Sie in der Menüleiste „Datei > Datei öffnen“ (unter macOS „Datei > Öffnen…“) und erstellen Sie im Dialogfeld einen Ordner, der als Arbeitsbereich dienen soll.

Nachdem du den Arbeitsbereich erstellt hast, kannst du eine einfache „Hello World“-Anwendungsvorlage erstellen, indem du den folgenden Befehl im Terminal unseres Projekts eingibst:

dotnet new console

Ihr neues Projekt sollte wie folgt aussehen:

Als Nächstes müssen Sie diese beiden Pakete installieren:

  • HtmlAgilityPack ist ein in C# geschriebener HTML-Parser zum Lesen und Schreiben von DOM.
  • CsvHelper ist ein Paket, das zum Lesen und Schreiben von CSV-Dateien verwendet wird.

Sie können sie mit diesen Befehlszeilen im Terminal Ihres Projekts installieren:

dotnet add package csvhelper
dotnet add package htmlagilitypack

4. Den Code schreiben

Importieren wir die Pakete, die wir vor wenigen Minuten installiert haben, sowie einige weitere nützliche Pakete für die spätere Verwendung:

using CsvHelper;
using HtmlAgilityPack;
using System.IO;
using System.Collections.Generic;
using System.Globalization;

Außerhalb unserer Main-Funktion erstellen Sie eine öffentliche Klasse für die Titel Ihres Inhaltsverzeichnisses.

public class Row
{
    public string Title {get; set;}
}

Kehren wir nun zur Main-Funktion zurück: Sie müssen die Seite laden, die Sie scrapen möchten. Wie bereits erwähnt, schauen wir uns an, was Wikipedia über Griechenland schreibt!

HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://en.wikipedia.org/wiki/Greece");

Unser nächster Schritt besteht darin, die Knoten zu parsen und auszuwählen, die die gesuchten Informationen enthalten. Diese befinden sich in den span-Tags mit der Klasse toctext.

varHeaderNames = doc.DocumentNode.SelectNodes("//span[@class='toctext']");

Was sollst du nun mit diesen Informationen machen? Speichern wir sie in einer CSV-Datei für die spätere Verwendung. Dazu musst du zunächst jeden zuvor extrahierten Knoten durchlaufen und dessen Text in einer Liste speichern.

CsvHelper erledigt den Rest der Arbeit und erstellt eine Datei, in die die extrahierten Informationen geschrieben werden.

var titles = new List<Row>();
foreach (var item in HeaderNames)
{
    titles.Add(new Row { Title = item.InnerText});
}
 
using (var writer = new StreamWriter("your_path_here/example.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(titles);
}

5. Ausführen des Codes

Der Code ist fertig und jetzt müssen wir ihn nur noch ausführen! Verwenden Sie diesen Befehl in der Terminal-Eingabe. Stellen Sie sicher, dass Sie Ihre Datei zuvor gespeichert haben!

dotnet run

Fertig!

Ich hoffe, dieser Artikel hat dir geholfen, die Grundlagen des Web-Scrapings mit C# besser zu verstehen.

Es ist sehr nützlich, einen eigenen Scraper zu haben, aber bedenke, dass du jeweils nur eine Webseite scrapen kannst und die Tags im HTML-Code der Website weiterhin manuell auswählen musst.

Wenn du mehrere andere Seiten scrapen möchtest, geht es mit einem Scraper zwar viel schneller als die Informationen manuell auszuwählen, aber nicht alle Websites lassen sich mit dieser Methode scrapen. Manche Websites sind dynamisch, und dieses Beispiel extrahiert nicht alle ihre Daten.

Haben Sie schon einmal darüber nachgedacht, ein vorgefertigtes und fortschrittlicheres Tool zu nutzen, das Ihnen beim massenhaften Scraping hilft? 

Wie wäre es, wenn du dir einmal ansiehst, was eine API für dich leisten kann? Hier ist ein Leitfaden von WebScrapingAPI, der dir bei der Auswahl einer API helfen soll, die deinen Anforderungen entspricht.

Bis zum nächsten Mal!

Über den Autor
Sorin-Gabriel Marica, Full-Stack-Entwickler @ WebScrapingAPI
Sorin-Gabriel MaricaFull-Stack-Entwickler

Sorin Marica ist Full-Stack- und DevOps-Entwickler bei WebScrapingAPI, wo er Produktfunktionen entwickelt und die Infrastruktur wartet, die für einen reibungslosen Betrieb der Plattform sorgt.

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.