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 ist IronWebScraper der Scrapy-Bibliothek for Python ähnlich, nutzt jedoch die Vorteile von C#, insbesondere seine Fähigkeit, Code durchzulaufen, während der Webscraping-Prozess im Gange ist und zu debuggen.
Installation
Ihr erster Schritt wird darin bestehen, IronWebScraper zu installieren, was Sie entweder über NuGet oder durch Herunterladen der DLL von unserer Website tun können.
Alle benötigten Klassen finden Sie im IronWebScraper Namensraum.
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
IronWebScraper 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 korrekt befü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 IronWebScraper benutzt, 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 der wir die Anfangseinstellungen festlegen und die erste Anfrage starten können, was wiederum eine Kettenreaktion auslöst, bei der die gesamte Website gescrapt wird.
Außerdem muss mindestens eine Parse-Methode hinzugefügt werden. 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 festlegen, 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 IronWebScraper zu erfahren, empfehlen wir Ihnen, die API Referenz Dokumentation zu lesen, und dann beginnen, die Beispiele im Tutorial-Abschnitt 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.

