MeinDatenanbieter » Lösungen » Web-Scraping » Web-Scraping-Entwicklung » C#

So kratzen Sie Daten von einer Website in C#

Wenn Sie nicht lesen und nur C#-Codebeispiele herunterladen möchten

Bevor wir mit dem Web-Scarping in C# beginnen, müssen wir es wissen. Was ist Webscraping? Web Scraping ist Data Scraping, das zum Extrahieren von Daten aus Websites verwendet wird. Die anderen Begriffe, die für Web-Scarping verwendet werden, sind Web-Harvesting oder Web-Datenextraktion.
Web-Scraping wird für Kontakt-Scraping und als Komponente von Anwendungen verwendet, die für Web-Indizierung, Web-Mining und Data-Mining verwendet werden, Online-Überwachung von Preisänderungen und Preisvergleich, Scraping von Produktbewertungen (um die Konkurrenz zu beobachten), Überwachung von Wetterdaten, Erkennung von Website-Änderungen, Recherche, Verfolgung von Online-Präsenz und -Reputation, Web-Mashup und Webdatenintegration – Sie können mehr darüber auf unserer Seite über lesen Web-Scraping-Dienst.

Webscraping mit C#

Im Laufe der Zeit nimmt der Prozess der Datenextraktion zu. Auf die Daten auf verschiedenen Websites kann über deren Web-API oder Webdienste zugegriffen werden. Wenn einige Websites keinen Zugriff auf ihre Daten bereitstellen oder zulassen, wird Web Scraping verwendet, mit dem auf Daten zugegriffen wird. Web-Scraping, das es Entwicklern ermöglicht, das Surfverhalten von Menschen zu simulieren und zu automatisieren, um Inhaltsdateien, Bilder und andere Informationen aus Webanwendungen zu extrahieren, um bestimmte Aufgaben auszuführen.
Jetzt werde ich Ihnen zeigen, wie Sie hier eine Website mit C# verschrotten Mein Datenanbieter. ich werde Ebay verschrotten Das ist eine sehr berühmte Website mit C#. Dieser Prozess folgt einem Verfahren, und das Verfahren enthält verschiedene Schritte, die im Einzelnen wie folgt sind.

Video-Demo

C#-Web-Scraping – finden Sie heraus, wie Sie einen C#-Web-Scraper erstellen – eBay-Beispiel

Lassen Sie uns Web Scraper mit c# für Ebay entwickeln

Öffnen Sie Visual Studio. Neues Projekt hinzufügen und die C#-Konsolenanwendung aus der Vorlage auswählen. Benennen Sie das Projekt als EbayScrapper, wie in Abb.

Danach gehen Sie auf die Website von ebay. Hier ist der Link. https://www.ebay.com

Gehen Sie auf der eBay-Website zur erweiterten Suche und suchen Sie nach Xbox One. Die damit verbundenen Elemente werden angezeigt.

Kopieren Sie diese URL und fügen Sie sie in das Hauptprogramm ein, da diese Webseite später in diesem Artikel verschrottet wird.

Erforderliche Referenzen

Danach müssen wir die folgenden C# NuGet-Pakete installieren, indem Sie einfach mit der rechten Maustaste auf die Referenz im Programmverzeichnis klicken.
1) HTTP-Client
2) HtmlAgilityPack
Im Folgenden sind die notwendigen Dinge zum Verschrotten dieser Website aufgeführt.

Der folgende Code bestimmt genau den Website-Code, den wir auf der Website überprüfen können.
[code lang="csharp"]

static void Main (string [] args)
{
GetHtmlAsync();
Console.ReadLine()
}

Statisch void GetHtmlAsync()
{
var url ="https://www.ebay.com/sch/i.html?_nkw=xbox+one&_in_kw=1&_ex_kw=&_sacat=0&LH_Complete=1&_udlo=&_udhi=&_samilow=&_samihi=&_sadis=15&_stpos=&_sargn=-1%26saslc%3D1&_salic=1&_sop=12&_dmd=1&_ipg=50";
var httpclient = neuer HttpClient();
var html = httpclient.GetStringAsync(url);
Console.WriteLine (Ergebnis.html);
}
[/ Code]

Die Ausgabe dieses Codes ist wie folgt:

Wir kopieren einfach den Website-Code und fügen ihn in den Editor ein, um sicherzustellen, dass einige Dinge später verwendet werden

Danach werden wir Daten von ebay zu unserer Anwendung analysieren. Dazu verwenden wir ein HTML-Dokument. Wir werden einen Code für Grablist-Items schreiben. Wir schreiben diesen Code gemäß dem Website-Code.
[code lang="csharp"]
var ProductsHtml = htmlDocument.DocumentNode.Descendants("ul")
.Where(node ​​=> node.GetAttributeValue("id", "")
.Equals("ListViewInner")).ToList();
var ProductListItems = ProductsHtml[0].Descendants("li")
.Where(node ​​=> node.GetAttributeValue("id", "")
.Contains("Element")).ToList();
Console.WriteLine(ProductListItems.Count());
Console.WriteLine ();
[/ Code]

Nach dem Ausführen des Programms verwenden wir zu einem bestimmten Zeitpunkt einen Haltepunkt und es ist klar, dass die Anzahl 50 beträgt. Wir haben alle Informationen zu einem Element und der Testvisualisierer wird wie folgt angezeigt:

Jetzt ziehen diese Schritte alle Informationen von der Website zu meiner Konsolenanwendung. Dazu werde ich einige Implementierungen in bestehenden Code vornehmen.

Zunächst werde ich für jede Schleife verwenden, die die Dinge in meiner Konsole nach Websites sortiert.

Zuerst werde ich die Listen-ID herausziehen, da jede Anzeige auf der Website eine eindeutige ID hat. Dafür muss ich einige zusätzliche Dinge im Code verwenden, die wie folgt lauten:
[code lang="csharp"]
foreach( var ProductListItem in ProductListItems)
{
//ICH WÜRDE
Console.WriteLine(ProductListItem.GetAttributeValue("listingid", ""));
[/ Code]

Als nächstes werde ich den Produktnamen selbst herausziehen. Der Produktname und der ID-Code müssen für jede Schleife eingetragen werden. Der Produktnamencode wird entsprechend der Attributverwendung im Websitecode geschrieben. Der Code wird wie folgt angezeigt:
[code lang="csharp"]
//Produktname
Console.WriteLine(ProductListItem.Descendants("h3")
.Where(node ​​=> node.GetAttributeValue("class", "")
.Equals("lvtitle")).FirstOrDefault().InnerText.Trim('\r', '\n', '\t'));
[/ Code]

Das nächste, was ich herausziehen werde, ist der Preis des Produkts. Der Preis des Produktcodes wird auch entsprechend der Attributverwendung im Websitecode geschrieben. Der Code wird wie folgt angezeigt:
[code lang="csharp"]
//Preis
Console.WriteLine(ProductListItem.Descendants("li")
.Where(node ​​=> node.GetAttributeValue("class", "")
.Equals("lvprice prc")).FirstOrDefault().InnerText.Trim('\r','\n','\t')
);
[/ Code]

Alle diese Implementierungen erfolgen gemäß den Ankern und Attributen der Website.
Dies sind die Details des Produkts. Das nächste, was ich herausziehen werde, ist der Auflistungstyp, dessen Code wie folgt angegeben ist:
[code lang="csharp"]
//ListingType
Console.WriteLine(ProductListItem.Descendants("li")
.Where(node ​​=> node.GetAttributeValue("class", "")
.Equals("lvformat")).FirstOrDefault().InnerText.Trim('\r', '\n', '\t')
);
[/ Code]

Das letzte, was herausgezogen werden muss, ist der Link des Produkts, wie er auf der Website angegeben ist, und sein Code lautet wie folgt:
[code lang="csharp"]
//URL
Console.WriteLine( ProductListItem.Descendants("a").FirstOrDefault().GetAttributeValue("href", "")
);
[/ Code]
Der Gesamtcode dieses Web-Scraping-Prozesses lautet wie folgt:

Ausgabe

Beispielprodukt

Beispielprodukt auf der ebey-Website.

Laden Sie das C#-Web-Scraper-Beispiel herunter