Webscraping in C#

This article was translated from English: Does it need improvement?
Translated
View the article in English

Was ist IronWebScraper?

IronWebScraper ist eine Klassenbibliothek und ein Framework für C# und die .NET-Programmplattform, das es Entwicklern ermöglicht, programmgesteuert Webseiten zu lesen und deren Inhalte zu extrahieren. Dies ist ideal für das Reverse Engineering von Websites oder bestehenden Intranets und deren Rückführung in Datenbanken oder JSON-Daten. Es ist auch nützlich, um große Mengen an Dokumenten aus dem Internet herunterzuladen.

In vielerlei Hinsicht ähnelt Iron Web Scraper der Scrapy-Bibliothek für Python, nutzt jedoch die Vorteile von C#, insbesondere die Fähigkeit, Schritt für Schritt durch den Code zu gehen, während der Webscraping-Prozess im Gange ist, und zu debuggen.

Installation

Your first step will be to install Iron Web Scraper, which you may do from NuGet or by downloading the DLL from our website.

Alle benötigten Klassen finden Sie im Iron Web Scraper-Namespace.

Install-Package IronWebScraper

Beliebte Anwendungsfälle

Migrating Websites to Databases

IronWebScraper bietet die Werkzeuge und Methoden, mit denen Sie Ihre Websites zurück in strukturierte Datenbanken umgestalten können. Diese Technologie ist nützlich, wenn Sie Inhalte von Legacy-Websites und Intranets in Ihre neue C#-Anwendung migrieren.

Migrating Websites

Die Fähigkeit, den Inhalt einer teilweisen oder vollständigen Website in C# leicht zu extrahieren, verringert den Zeit- und Kostenaufwand bei der Migration oder Aufrüstung von Website- und Intranet-Ressourcen. Dies kann erheblich effizienter sein als direkte SQL-Transformationen, da es die Daten auf das reduziert, was auf jeder Webseite zu sehen ist, und weder die vorherigen SQL-Datenstrukturen verstanden werden müssen noch komplexe SQL-Abfragen erstellt werden müssen.

Populating Search Indexes

Iron Web Scraper kann auf Ihre eigene Website oder Ihr Intranet gerichtet werden, um strukturierte Daten zu lesen, jede Seite zu lesen und die richtigen Daten zu extrahieren, damit eine Suchmaschine innerhalb Ihrer Organisation genau gefüllt werden kann.

IronWebScraper ist ein ideales Tool, um Inhalte für Ihren Suchindex zu scrapen. Eine Suchanwendung wie IronSearch kann strukturierte Inhalte von IronWebScraper lesen, um ein leistungsstarkes Enterprise-Suchsystem aufzubauen.

Verwendung von Iron Webscraper

Um zu lernen, wie man Iron Web Scraper verwendet, ist es am besten, sich Beispiele anzusehen. Dieses einfache Beispiel erstellt eine Klasse, um Titel von einem Website-Blog zu scrapen.

using IronWebScraper;

namespace WebScrapingProject
{
    class MainClass
    {
        public static void Main(string [] args)
        {
            var scraper = new BlogScraper();
            scraper.Start();
        }
    }

    class BlogScraper : WebScraper
    {
        // Initialize scraper settings and make the first request
        public override void Init()
        {
            // Set logging level to show all log messages
            this.LoggingLevel = WebScraper.LogLevel.All;

            // Request the initial page to start scraping
            this.Request("https://ironpdf.com/blog/", Parse);
        }

        // Method to handle parsing of the page response
        public override void Parse(Response response)
        {
            // Loop through each blog post title link found by CSS selector
            foreach (var title_link in response.Css("h2.entry-title a"))
            {
                // Clean and extract the title text
                string strTitle = title_link.TextContentClean;

                // Store the extracted title for later use
                Scrape(new ScrapedData() { { "Title", strTitle } });
            }

            // Check if there is a link to the previous post page and if exists, follow it
            if (response.CssExists("div.prev-post > a[href]"))
            {
                // Get the URL for the next page
                var next_page = response.Css("div.prev-post > a[href]")[0].Attributes["href"];

                // Request the next page to continue scraping
                this.Request(next_page, Parse);
            }
        }
    }
}
using IronWebScraper;

namespace WebScrapingProject
{
    class MainClass
    {
        public static void Main(string [] args)
        {
            var scraper = new BlogScraper();
            scraper.Start();
        }
    }

    class BlogScraper : WebScraper
    {
        // Initialize scraper settings and make the first request
        public override void Init()
        {
            // Set logging level to show all log messages
            this.LoggingLevel = WebScraper.LogLevel.All;

            // Request the initial page to start scraping
            this.Request("https://ironpdf.com/blog/", Parse);
        }

        // Method to handle parsing of the page response
        public override void Parse(Response response)
        {
            // Loop through each blog post title link found by CSS selector
            foreach (var title_link in response.Css("h2.entry-title a"))
            {
                // Clean and extract the title text
                string strTitle = title_link.TextContentClean;

                // Store the extracted title for later use
                Scrape(new ScrapedData() { { "Title", strTitle } });
            }

            // Check if there is a link to the previous post page and if exists, follow it
            if (response.CssExists("div.prev-post > a[href]"))
            {
                // Get the URL for the next page
                var next_page = response.Css("div.prev-post > a[href]")[0].Attributes["href"];

                // Request the next page to continue scraping
                this.Request(next_page, Parse);
            }
        }
    }
}
Imports IronWebScraper

Namespace WebScrapingProject
	Friend Class MainClass
		Public Shared Sub Main(ByVal args() As String)
			Dim scraper = New BlogScraper()
			scraper.Start()
		End Sub
	End Class

	Friend Class BlogScraper
		Inherits WebScraper

		' Initialize scraper settings and make the first request
		Public Overrides Sub Init()
			' Set logging level to show all log messages
			Me.LoggingLevel = WebScraper.LogLevel.All

			' Request the initial page to start scraping
			Me.Request("https://ironpdf.com/blog/", AddressOf Parse)
		End Sub

		' Method to handle parsing of the page response
		Public Overrides Sub Parse(ByVal response As Response)
			' Loop through each blog post title link found by CSS selector
			For Each title_link In response.Css("h2.entry-title a")
				' Clean and extract the title text
				Dim strTitle As String = title_link.TextContentClean

				' Store the extracted title for later use
				Scrape(New ScrapedData() From {
					{ "Title", strTitle }
				})
			Next title_link

			' Check if there is a link to the previous post page and if exists, follow it
			If response.CssExists("div.prev-post > a[href]") Then
				' Get the URL for the next page
				Dim next_page = response.Css("div.prev-post > a[href]")(0).Attributes("href")

				' Request the next page to continue scraping
				Me.Request(next_page, AddressOf Parse)
			End If
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Um eine bestimmte Website zu scrapen, müssen wir unsere eigene Klasse erstellen, um diese Website zu lesen. Diese Klasse wird Web Scraper erweitern. Wir werden dieser Klasse einige Methoden hinzufügen, einschließlich Init, wo wir anfängliche Einstellungen festlegen und die erste Anfrage starten können, die dann eine Kettenreaktion verursacht, bei der die gesamte Website gescraped wird.

Wir müssen auch mindestens eine Parse-Methode hinzufügen. Parse-Methoden lesen Webseiten, die aus dem Internet heruntergeladen wurden, und verwenden jQuery-ähnliche CSS-Selektoren, um Inhalte auszuwählen und den relevanten Text und/oder Bilder zur Nutzung zu extrahieren.

Innerhalb einer Parse-Methode können wir auch angeben, welchen Hyperlinks der Crawler folgen soll und welche er ignorieren wird.

Wir können die Scrape-Methode verwenden, um beliebige Daten zu extrahieren und sie in ein bequemes JSON-Dateiformat zur späteren Verwendung zu übertragen.

Vorgehen

Um mehr über Iron Web Scraper zu erfahren, empfehlen wir Ihnen, die API-Referenzdokumentation zu lesen und dann mit den Beispielen im Tutorial-Bereich unserer Dokumentation zu beginnen.

Das nächste Beispiel, das wir Ihnen empfehlen, sich anzusehen, ist das C# "blog" Webscraping-Beispiel, wo wir lernen, wie wir den Textinhalt von einem Blog, wie einem WordPress-Blog, extrahieren können. Dies könnte bei einer Site-Migration sehr nützlich sein.

Von dort aus können Sie sich die anderen fortgeschrittenen Webscraping-Tutorials ansehen, wo wir uns mit Konzepten wie Websites mit vielen verschiedenen Seitentypen, E-Commerce-Websites und wie man mehrere Proxys, Identitäten und Logins beim Scrapen von Daten aus dem Internet nutzt, befassen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 122,916 | Version: 2025.11 gerade veröffentlicht