Web Scraper avec C# en quelques minutes !

Suciu Dan le 12 octobre 2022

L'importance de la collecte d'informations est connue depuis l'Antiquité, et les peuples qui l'ont utilisée à leur avantage ont prospéré.

Aujourd'hui, nous pouvons le faire beaucoup plus facilement et rapidement en utilisant un outil de scraping, et il n'est pas difficile non plus de créer son propre scraper. La possibilité de recueillir des pistes plus rapidement, de garder un œil sur la concurrence et sur votre propre marque, et d'en savoir plus avant d'investir dans des idées est à portée de main.

À ce stade, vous le saviez peut-être.

Si vous souhaitez en savoir plus sur le web scraping ou sur la manière de construire votre outil en C#, nous vous invitons à nous suivre !

Le web scraping est-il légal ?

Eh bien, c'est légal tant que le site web que vous souhaitez récupérer est d'accord avec cela. Vous pouvez le vérifier en ajoutant "/robots.txt" à son adresse URL, comme sur http://httpbin.org/robots.txt, et en lisant les autorisations, ou en consultant la section des CGU.

Qu'est-ce que le web scraping avec c sharp ?

Le web scraping est une technique automatisée utilisée par des entreprises de toutes tailles pour extraire des données à des fins diverses, telles que l'optimisation des prix ou la collecte d'e-mails. Les chercheurs utilisent le web scraping pour collecter des rapports de données et des statistiques, et les développeurs obtiennent de grandes quantités de données pour l'apprentissage automatique. 

Comment cela fonctionne-t-il ? Pour la plupart des outils de scraping web, il vous suffit de spécifier l'URL du site web dont vous souhaitez extraire des données. Selon les capacités de l'outil, il extraira les informations de cette page web de manière structurée, prêtes à être analysées et manipulées comme vous le souhaitez. 

Il faut tenir compte du fait que certains scrapers ne regardent que le contenu HTML d'une page pour voir les informations d'une page web dynamique. Dans ce cas, un outil de scraping web plus sophistiqué est nécessaire pour effectuer le travail.

L'utilisation d'un scraper web est très utile car elle permet de réduire le temps que vous consacrez normalement à cette tâche. Copier et coller manuellement des données n'a rien d'amusant. Pensez au temps qu'il faudrait pour obtenir de grandes quantités de données afin d'entraîner une IA ! Si vous souhaitez en savoir plus sur l 'utilité de l'extraction de données, jetez un coup d'œil !  

Voyons comment nous pouvons créer notre outil de scraping web en quelques minutes seulement.

Créer son propre scraper web en C#

Pour ce tutoriel, je vais vous montrer comment un scraper web peut être écrit en C#. Je sais que l'utilisation d'un autre langage de programmation tel que Python peut être plus avantageuse pour cette tâche, mais cela ne signifie pas qu'il est impossible de le faire en C#. 

Coder en C# présente des avantages, tels que :

  • Il est orienté vers l'objet ;
  • L'intégrité et l'interopérabilité sont meilleures ;
  • Il s'agit d'un logiciel multiplateforme ;

1. Choisir la page que vous voulez récupérer

Tout d'abord, vous devez décider de la page web à analyser. Dans cet exemple, je vais parcourir la Grèce sur Wikipedia et voir quels sujets sont présentés dans sa table des matières. Il s'agit d'un exemple simple, mais vous pouvez également l'adapter à d'autres pages web.

2. Inspection du code du site web

Grâce aux outils de développement, vous pouvez inspecter chaque élément pour vérifier et voir sous quelle balise se trouve l'information dont vous avez besoin. Il suffit de cliquer avec le bouton droit de la souris sur la page web et de sélectionner "inspecter" pour faire apparaître une "boîte d'inspection du navigateur".

blog-image

Vous pouvez rechercher la classe directement dans la section des éléments ou en utilisant l'outil d'inspection sur la page web, comme indiqué ci-dessous.

blog-image

Vous avez ainsi découvert que les données dont vous avez besoin se trouvent dans la balise span qui a la classe toctext. Ce que vous allez faire ensuite, c'est extraire tout le code HTML de la page, l'analyser et ne sélectionner que les données qui se trouvent dans cette classe spécifique. Faisons d'abord quelques préparatifs rapides !

3. Préparer l'espace de travail

Vous pouvez utiliser l'IDE qui vous convient le mieux. Dans cet exemple, j'utiliserai Visual Studio Code. Vous devrez également installer le SDK .NET.

Vous devez maintenant créer votre projet. Pour ce faire, vous devez évidemment ouvrir Visual Studio Code. Ensuite, vous irez dans le menu des extensions et vous installerez C# pour Visual Studio Code.

blog-image

Vous avez besoin d'un endroit pour écrire et exécuter notre code. Dans la barre de menu, vous sélectionnerez Fichier > Ouvrir un fichier (Fichier > Ouvrir... sur macOS) et dans la boîte de dialogue, vous créerez un dossier qui servira d'espace de travail.

Après avoir créé le lieu de travail, vous pouvez créer un modèle d'application simple "Hello World" en entrant la commande suivante dans le terminal de nos projets :

dotnet nouvelle console

Votre nouveau projet devrait ressembler à ceci :

blog-image

Ensuite, vous devez installer ces deux paquets :

  • HtmlAgilityPack est un analyseur HTML écrit en C# pour lire/écrire le DOM.
  • CsvHelper est un paquetage utilisé pour lire et écrire des fichiers CSV.

Vous pouvez les installer en utilisant ces lignes de commande dans le terminal de votre projet :

dotnet add package csvhelper
dotnet add package htmlagilitypack

4. L'écriture du code

Importons les paquets que nous avons installés il y a quelques minutes, ainsi que d'autres paquets utiles pour une utilisation ultérieure :

using CsvHelper ;
using HtmlAgilityPack ;
using System.IO ;
using System.Collections.Generic ;
using System.Globalization ;

En dehors de notre fonction Main, vous allez créer une classe publique pour vos titres de table des matières.

public class Row
{
public string Title {get; set;}
}

Pour revenir à la fonction principale, vous devez charger la page que vous souhaitez récupérer. Comme je l'ai mentionné précédemment, nous allons examiner ce que Wikipédia écrit sur la Grèce !

HtmlWeb web = new HtmlWeb() ;
HtmlDocument doc = web.Load("https://en.wikipedia.org/wiki/Greece") ;

L'étape suivante consiste à analyser et à sélectionner les nœuds contenant les informations recherchées, qui se trouvent dans les balises span de la classe toctext.

varHeaderNames = doc.DocumentNode.SelectNodes("//span[@class='toctext']") ;

Que faire de ces informations maintenant ? Stockons-les dans un fichier .csv pour une utilisation ultérieure. Pour ce faire, vous devez d'abord itérer sur chaque nœud que nous avons extrait plus tôt et stocker son texte dans une liste.

CsvHelper se chargera du reste du travail, en créant et en écrivant les informations extraites dans un fichier.

var titles = new List<Row>();
foreach (var item in HeaderNames)
{
titles.Add(new Row { Title = item.InnerText});
}

using (var writer = new StreamWriter("your_path_here/example.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(titles);
}

5. Exécution du code

Le code est terminé et il ne reste plus qu'à l'exécuter ! Utilisez cette ligne de commande dans le terminal. Assurez-vous d'avoir sauvegardé votre fichier avant !

exécuter dotnet

Vous avez terminé !

J'espère que cet article vous a aidé à mieux comprendre les bases du web scraping en C#.

Il est très utile d'avoir son propre scraper, mais n'oubliez pas que vous ne pouvez scraper qu'une page web à la fois et que vous devez toujours sélectionner manuellement les balises dans le code HTML du site web.

Si vous souhaitez extraire plusieurs autres pages, il sera beaucoup plus rapide d'utiliser un scraper que de sélectionner les informations manuellement, oui, mais tous les sites web ne peuvent pas être extraits à l'aide de cette méthode. Certains sites web sont dynamiques et cet exemple ne permettra pas d'extraire toutes leurs données.

Avez-vous déjà pensé à utiliser un outil préfabriqué et plus avancé pour vous aider à racler en masse ? 

Que diriez-vous de vérifier ce qu'une API peut faire pour vous ? Voici un guide rédigé par WebScrapingAPI pour vous aider à choisir une API susceptible de répondre à vos besoins.

A la prochaine fois !

Nouvelles et mises à jour

Restez au courant des derniers guides et nouvelles sur le web scraping en vous inscrivant à notre lettre d'information.

We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Articles connexes

vignette
Cas d'utilisationXPath et les sélecteurs CSS

Les sélecteurs XPath sont-ils meilleurs que les sélecteurs CSS pour le web scraping ? Découvrez les points forts et les limites de chaque méthode et faites le bon choix pour votre projet !

Mihai Maxim
avatar de l'auteur
Mihai Maxim
8 minutes de lecture
vignette
GuidesDécouvrez comment récupérer des tableaux HTML avec Golang

Apprenez à scraper des tableaux HTML avec Golang pour une extraction de données puissante. Explorez la structure des tableaux HTML et construisez un scraper web en utilisant la simplicité, la concurrence et la bibliothèque standard robuste de Golang.

Andrei Ogiolan
avatar de l'auteur
Andrei Ogiolan
8 minutes de lecture
vignette
GuidesLes 11 meilleurs conseils pour éviter d'être bloqué ou interdit d'IP lors d'une recherche sur le Web

Maîtrisez le web scraping sans être bloqué ! Suivez les conseils sur le respect des CGU, l'utilisation de proxies et l'évitement des bannissements d'IP. Extraire des données de manière éthique et légale.

Ștefan Răcila
avatar de l'auteur
Ștefan Răcila
4 min lire