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-Programmierplattform, die es Entwicklern ermöglichen, Websites programmatisch zu lesen und deren Inhalte zu extrahieren. Dies ist ideal für das Reverse Engineering von Websites oder bestehenden Intranets und deren Rückwandlung in Datenbanken oder JSON-Daten. Es ist auch nützlich zum Herunterladen großer Mengen von Dokumenten aus dem Internet.

Iron Web Scraper ähnelt in vielerlei Hinsicht der Scrapy-Bibliothek für Python, nutzt aber die Vorteile von C#, insbesondere die Möglichkeit, während des Web Scraping-Prozesses schrittweise durch den Code zu gehen und Fehler zu beheben.

Einrichtung

Ihr erster Schritt wird die Installation von IronWebScraper sein, die Sie von NuGetoder durchherunterladen der DLLvon unserer Website.

Alle benötigten Klassen sind im Iron Web Scraper Namespace zu finden.

PM > Install-Package IronWebScraper

Beliebte Anwendungsfälle

Migration von Websites in Datenbanken

IronWebscraper bietet die Werkzeuge und Methoden, die es Ihnen ermöglichen, Ihre Websites wieder in strukturierte Datenbanken umzuwandeln. Diese Technologie ist nützlich bei der Migration von Inhalten aus älteren Websites und Intranets in Ihre neue C#-Anwendung.

Migration von Websites

Die Möglichkeit, den Inhalt einer teilweisen oder vollständigen Website in C# zu extrahieren, reduziert den Zeit- und Kostenaufwand für die Migration oder Aktualisierung von Website- und Intranet-Ressourcen. Dies kann wesentlich effizienter sein als direkte SQL-Transformationen, da die Daten auf das reduziert werden, was auf jeder Webseite zu sehen ist, und weder das Verständnis der früheren SQL-Datenstrukturen noch die Erstellung komplexer SQL-Abfragen erforderlich sind.

Auffüllen von Suchindizes

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

IronWebscraper ist ein ideales Tool zum Scrapen von Inhalten für Ihren Suchindex. Eine Suchanwendung wie IronSearch kann strukturierte Inhalte aus IronWebscraper lesen, um ein leistungsstarkes Suchsystem für Unternehmen aufzubauen.

Iron Webscraper verwenden

Um zu lernen, wie Iron Web Scraper zu verwenden ist, ist es am besten, sich Beispiele anzuschauen. In diesem einfachen Beispiel wird eine Klasse erstellt, die Titel aus einem Website-Blog abruft.

using IronWebScraper;

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

    class BlogScraper : WebScraper
    {
        public override void Init()
        {
            this.LoggingLevel = WebScraper.LogLevel.All;
            this.Request("https://ironpdf.com/blog/", Parse);
        }

        public override void Parse(Response response)
        {
            foreach (var title_link in response.Css("h2.entry-title a"))
            {
                string strTitle = title_link.TextContentClean;
                Scrape(new ScrapedData() { { "Title", strTitle } });
            }

            if (response.CssExists("div.prev-post > a [href]"))
            {
                var next_page = response.Css("div.prev-post > a [href]")[0].Attributes ["href"];
                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
    {
        public override void Init()
        {
            this.LoggingLevel = WebScraper.LogLevel.All;
            this.Request("https://ironpdf.com/blog/", Parse);
        }

        public override void Parse(Response response)
        {
            foreach (var title_link in response.Css("h2.entry-title a"))
            {
                string strTitle = title_link.TextContentClean;
                Scrape(new ScrapedData() { { "Title", strTitle } });
            }

            if (response.CssExists("div.prev-post > a [href]"))
            {
                var next_page = response.Css("div.prev-post > a [href]")[0].Attributes ["href"];
                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

		Public Overrides Sub Init()
			Me.LoggingLevel = WebScraper.LogLevel.All
			Me.Request("https://ironpdf.com/blog/", AddressOf Parse)
		End Sub

		Public Overrides Sub Parse(ByVal response As Response)
			For Each title_link In response.Css("h2.entry-title a")
				Dim strTitle As String = title_link.TextContentClean
				Scrape(New ScrapedData() From {
					{ "Title", strTitle }
				})
			Next title_link

			If response.CssExists("div.prev-post > a [href]") Then
				Dim next_page = response.Css("div.prev-post > a [href]")(0).Attributes ("href")
				Me.Request(next_page, AddressOf Parse)
			End If
		End Sub
	End Class
End Namespace
VB   C#

Um eine bestimmte Website zu scrapen, müssen wir eine eigene Klasse erstellen, die diese Website liest. Diese Klasse wird Web Scraper erweitern. Wir werden dieser Klasse einige Methoden hinzufügen, darunter init, mit denen wir die Anfangseinstellungen festlegen und die erste Anfrage starten können, die dann wiederum eine Kettenreaktion auslöst, bei der die gesamte Website abgefragt 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 den Inhalt auszuwählen und die relevanten Texte und/oder Bilder für die Verwendung zu extrahieren.

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

Mit der Scrape-Methode können wir beliebige Daten extrahieren und zur späteren Verwendung in ein geeignetes Dateiformat im JSON-Stil ausgeben.

Vorwärts bewegen

Um mehr über Iron Web Scraper zu erfahren, empfehlen wir Ihnen die Lektüre desAPI-Referenzdokumentationund sehen Sie sich dann die Beispiele im Abschnitt "Tutorial" unserer Dokumentation an.

Das nächste Beispiel, das wir Ihnen empfehlen, ist dieC# "Blog" Webscraping Beispielhier lernen wir, wie wir den Textinhalt aus einem Blog, z. B. einem WordPress-Blog, extrahieren können. Dies kann bei einer Standortverlagerung sehr nützlich sein.

Von dort aus können Sie sich die anderentutorial für fortgeschrittenes Webscraping beispiele, bei denen wir Konzepte wie Websites mit vielen verschiedenen Seitentypen, E-Commerce-Websites und auch die Verwendung mehrerer Proxys, Identitäten und Logins beim Scrapen von Daten aus dem Internet betrachten können.