Webscraping in C
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 for 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
Ihr erster Schritt wird sein, Iron Web Scraper zu installieren, was Sie über NuGet oder durch Herunterladen der DLL von unserer Website tun können.
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
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, darunter Init, mit denen wir anfängliche Einstellungen vornehmen und die erste Anfrage starten können, was dann wiederum eine Kettenreaktion auslöst, bei der die gesamte Website gescraped wird.
Wir müssen außerdem 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 weiterhin folgen soll und welche er ignorieren soll.
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 sich anschließend die Beispiele im Tutorial-Bereich unserer Dokumentation anzusehen.
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.

