Web Scraping met C#

20 januari 2021 om 10:00 by ParTech Media - Post a comment

In onze vorige blog hebben we de basis van web scraping gezien, samen met de gebruiksscenario's. In dit artikel gaan we begrijpen hoe je web scraping kunt uitvoeren met C#. C# is een van de meest gebruikte programmeertalen die kan worden gebruikt om webgebaseerde, op Windows gebaseerde en consolegebaseerde toepassingen te ontwikkelen. C# biedt ook opties om webscraping uit te voeren. En er zijn maar weinig manieren om de gegevens van een website te krijgen, zoals via een API of via webscraping. C# ondersteunt beide manieren van gegevensextractie. Met C# is er dus een extra mogelijkheid om meerdere sites tegelijk op te halen; sommige via API en sommige via web scraping.

Projecten met een gevestigde codebase-configuratie in C # hoeven niet naar een andere taal te worden verplaatst om de taak van web scraping te bereiken. Ook met C# wordt het gemakkelijker om de geschraapte gegevens te koppelen aan de database, API, front-end systemen, etc. aangezien al deze systemen kunnen worden verbonden met C# in de backend. C# werkt op basis van het .Net-framework en er zijn veel .Net-bibliotheken en community-ondersteuning op de markt beschikbaar om de taak van web scraping te bereiken. Dit maakt het voor ontwikkelaars gemakkelijker om de taak uit te voeren en in geval van problemen naar communityforums te verwijzen. Laten we nu meer in detail kijken en webscraping begrijpen met C#.

Inhoudsopgave

  1. Web scraping met C#
  2. Conclusie

Web scraping met C#

Vandaag gaan we web scraping doen met HTML-parsing. Hierin zoekt de webscraper naar de inhoud in de HTML-tags en haalt de benodigde gegevens op.

We gaan het webscrapen van https://coinmarketcap.com/. Deze website bevat de informatie van cryptocurrencies, zoals de huidige prijs, procentuele verandering in de afgelopen 24 uur, 7 dagen, marktkapitaal en volume voor cryptocurrency en andere valuta's.

Stap 1

Open de Visual Studio en klik op ‘Create a new project’ en kies het project template als ‘Windows Forms App(.Net Framework)’. Klik nu op de optie ‘Create’.

Opmerking - hier kiezen we voor Windows-formulieren. Het is ook mogelijk om dezelfde functionaliteit te bereiken met behulp van de Windows-consoletoepassing. Elke projectsjabloon kan worden gekozen op basis van jouw gemak.

Stap 2

Geef in het volgende scherm een geldige naam op voor de oplossing en het pad waarin de oplossing moet worden aangemaakt en geplaatst. In dit voorbeeld gebruiken we .Net Framework versie 4.7.2. Op basis van jouw wensen kan worden gekozen voor .Net Core of .Net-framework.

Stap 3

Zodra het project is gemaakt, heeft het een Form1.cs-bestand, terwijl het een ontwerp van het Windows-formulier bevat. Omdat we gaan werken aan de webscraping-functie, slaan we het maken van knop- en tekstvelden in het formulier over. Maar als gebruikers het webscrapen dynamisch moeten doen, kunnen gebruikers een tekstvak (invoerveld) en een knop (voor verzending) maken om de URL van de keuze van de gebruiker voor het schrapen in te voeren.

Stap 4

Druk op de F7-knop door op het Form1.cs-bestand te klikken vanuit de solution explorer. Dit opent de code onder het Form1.cs-bestand dat is gemaakt als onderdeel van de projectsjabloon.

Stap 5

Om de verwerking van de HTML-paginagegevens in de C#-code te vergemakkelijken, gaan we een NuGet-package installeren dat ons helpt bij het lokaliseren en verplaatsen naar het specifieke node van de gegevens, dat op zijn beurt wordt opgehaald van de website.

Te installeren package - HtmlAgilityPack (Open NuGet voor de oplossing en zoek naar het package en installeer het in de oplossing).

Stap 6

De volgende stap is om de code toe te voegen die verbinding maakt met de URL en de paginagegevens van de webpagina te halen. In dit voorbeeld gaan we de optie HtmlClient gebruiken. De te benoemen URL is hard gecodeerd in de code en de client. GetStringAsync haalt de gegevens op van de website en de gegevens worden opgeslagen in de lokale variabele. Al deze acties zijn aanwezig in de methode – GetDataFromWebPage

Stap 7

Zodra de gegevens van de webpagina zijn verkregen, parse je de verkregen HTML van de pagina met behulp van het HtmlDocument dat bij het HtmlAgilityPack wordt geleverd. Doe dit door het HTML-document in de variabele HTML-document te laden.

Stap 8

Ga na het laden van de HTML naar de variabele naar de HTML-tag 'tbody'. Dit is de tag waaronder de rijen van de cryptocurrency-gegevens aanwezig zijn.

Stap 9

Nadat je de tabelgegevens hebt verkregen, haal je de onderliggende nodes op. Dit geeft de lijst met alle rijen die in de tabel aanwezig zijn. Nadat we de rijen hebben opgehaald, moeten we door de kolommen lopen om de vereiste gegevens te krijgen op basis van de requirement. Haal dus voor elk verkregen rij-item alle onderliggende knooppunten op. Hiermee worden afzonderlijke kolommen geretourneerd.

Stap 10

In dit voorbeeld hebben we de valutanaam en de waarde ervan uit de geschraapte gegevens gehaald en schrijven we deze in een CSV-bestand. De methode ParseHtml is aangepast aan de onderstaande om hetzelfde te bereiken. Er is ook een nieuwe methode, WriteDataToCSV, toegevoegd om de gegevens naar het CSV-bestand te schrijven.

Hier is de voorbeelduitvoer van het CSV-bestand met 2 kolommen, een voor de valutanaam en een andere voor de waarde ervan. Op basis van jouw eisen kun je de vereiste kolomgegevens ophalen en opslaan in het formaat van jouw keuze en de gegevens aanpassen zoals vereist.

Conclusie

Met de kracht van C# en het NuGet-package bleek de taak om de gegevens van een website te schrapen, de vereiste gegevens te filteren en naar een bestand te schrijven vrij eenvoudig en moeiteloos. Ook is het aantal regels code vrij laag voor zo'n grote taak. Op dezelfde manier kunnen dezelfde gegevens worden gemanipuleerd, gewijzigd, bijgewerkt en opgeslagen in relationele databases of bestanden naar keuze van de gebruiker met behulp van C#.

Nieuwste