IRONSOFTWAREHOME

How to Scrape Data from Websites in C#

Curtis Chau
Curtis Chau
Updated: 9 mai 2026

IronWebScraper est une bibliothèque .NET pour le web scraping, l'extraction de données web et l'analyse de contenu web. Il s'agit d'une bibliothèque facile à utiliser qui peut être ajoutée aux projets Microsoft Visual Studio pour une utilisation en développement et en production.

IronWebScraper dispose de nombreuses fonctionnalités et capacités uniques telles que le contrôle des pages, objets, médias autorisés et interdits, etc. Il permet également la gestion de plusieurs identités, la mise en cache web, et de nombreuses autres fonctionnalités que nous couvrirons dans ce tutoriel.

Commencez avec IronWebScraper

Start using IronWebScraper in your project today with a free trial.

Première étape :
arrow pointer

Public cible

Ce tutoriel s'adresse aux développeurs de logiciels possédant des compétences en programmation de base ou avancées, qui souhaitent concevoir et mettre en œuvre des solutions pour des capacités de web scraping avancées (web scraping de sites web, collecte et extraction de données de sites web, analyse du contenu de sites web, web harvesting).

 Image de webscraping

Compétences requises

  1. Maîtrise des fondamentaux de la programmation et des compétences liées à l'utilisation d'un langage de programmation Microsoft tel que C# ou VB.NET.
  2. Connaissance de base des technologies web (HTML, JavaScript, jQuery, CSS, etc.) et de leur fonctionnement.
  3. Connaissances de base du DOM, de XPath, du HTML et des sélecteurs CSS

Outils

  1. Microsoft Visual Studio 2010 ou version ultérieure
  2. Extensions pour développeurs web destinées aux navigateurs, telles que l'inspecteur web pour Chrome ou Firebug pour Firefox.

Pourquoi gratter ? (Reasons and Concepts)

Si vous souhaitez créer un produit ou une solution capable de :

  1. Extraire les données du site web
  2. Comparez le contenu, les prix, les fonctionnalités, etc. de plusieurs sites web
  3. Analyse et mise en cache du contenu du site web

Si vous avez une ou plusieurs raisons parmi celles-ci, alors IronWebScraper est une excellente bibliothèque pour répondre à vos besoins

Comment installer IronWebScraper ?

Après que vous ayez Create a New Project (voir Appendice A), vous pouvez ajouter la bibliothèque IronWebScraper à votre projet en insérant automatiquement la bibliothèque via NuGet ou en installant manuellement le DLL.

Installer à l'aide de NuGet

Pour ajouter la bibliothèque IronWebScraper à notre projet en utilisant NuGet, nous pouvons le faire à l'aide de l'interface visuelle (Gestionnaire de packages NuGet) ou par commande en utilisant la console du gestionnaire de packages.

Utilisation de NuGet Package Manager

  1. À l'aide de la souris, cliquez avec le bouton droit sur le nom du projet, puis sélectionnez " Gérer les packages NuGet ".
  2. Depuis l'onglet de recherche -> cherchez IronWebScraper -> Installer
  3. Cliquez sur OK
  4. Et c'est terminé.

Utilisation de la console de packages NuGet

  1. Dans Outils -> Gestionnaire de packages NuGet -> Console du gestionnaire de packages
  2. Choisissez le projet de bibliothèque de classes comme projet par défaut
  3. Exécutez la commande -> Install-Package IronWebScraper

Installation manuelle

  1. Allez àhttps://ironsoftware.com
  2. Cliquez sur IronWebScraper ou accédez directement à sa page via l'URL.https://ironsoftware.com/csharp/webscraper/
  3. Cliquez sur Télécharger la DLL.
  4. Extraire le fichier compressé téléchargé
  5. Dans Visual Studio, cliquez avec le bouton droit sur le projet -> Ajouter -> Références -> Parcourir

 Ajouter IronWebScraper en utilisant DLL

  1. Allez dans le dossier extrait -> netstandard2.0 -> et sélectionnez tous les fichiers .dll

 Ajouter IronWebScraper en utilisant DLL 2

  1. Et voilà !

HelloScraper - Notre premier exemple d'IronWebScraper

Comme d'habitude, nous commencerons par implémenter l'application Hello Scraper pour faire nos premiers pas avec IronWebScraper.

Nous avons créé une nouvelle application console nommée " IronWebScraperSample ".

Étapes pour créer un exemple d'IronWebScraper

  1. Créez un dossier et nommez-le " HelloScraperSample ".

  2. Ensuite, ajoutez une nouvelle classe et nommez-la HelloScraper  HelloScraper Ajouter Classe

  3. Ajoutez cet extrait de code à HelloScraper

    public class HelloScraper : WebScraper
    {
        /// <summary>
        /// Override this method to initialize your web scraper.
        /// Important tasks will be to request at least one start URL and set allowed/banned domain or URL patterns.
        /// </summary>
        public override void Init()
        {
            License.LicenseKey = "LicenseKey"; // Write License Key
            this.LoggingLevel = WebScraper.LogLevel.All; // Log all events
            this.Request("https://blog.scrapinghub.com", Parse); // Initialize a web request to the given URL
        }
    
        /// <summary>
        /// Override this method to create the default Response handler for your web scraper.
        /// If you have multiple page types, you can add additional similar methods.
        /// </summary>
        /// <param name="response">The HTTP Response object to parse</param>
        public override void Parse(Response response)
        {
            // Set working directory for the project
            this.WorkingDirectory = AppSetting.GetAppRoot() + @"\HelloScraperSample\Output\";
            // Loop on all links
            foreach (var titleLink in response.Css("h2.entry-title a"))
            {
                // Read link text
                string title = titleLink.TextContentClean;
                // Save result to file
                Scrape(new ScrapedData() { { "Title", title } }, "HelloScraper.json");
            }
    
            // Loop on all links for pagination
            if (response.CssExists("div.prev-post > a[href]"))
            {
                // Get next page URL
                var nextPage = response.Css("div.prev-post > a[href]")[0].Attributes["href"];
                // Scrape next URL
                this.Request(nextPage, Parse);
            }
        }
    }
  4. Maintenant pour commencer le scraping, ajoutez cet extrait de code à Main

    static void Main(string[] args)
    {
        // Create Object From Hello Scrape class
        HelloScraperSample.HelloScraper scrape = new HelloScraperSample.HelloScraper();
        // Start Scraping
        scrape.Start();
    }
  5. Le résultat sera enregistré dans un fichier au format WebScraper.WorkingDirectory/classname.Json  Résultat HelloScraper

Aperçu du code

Scrape.Start() déclenche la logique de scraping comme suit :

  1. Appelle la méthode Init() pour initialiser les variables, les propriétés de scraping et les attributs de comportement.
  2. Définit la requête de la page de départ dans Init() avec Request("https://blog.scrapinghub.com", Parse).
  3. Gère plusieurs requêtes HTTP et threads en parallèle, maintenant le code synchrone et facilitant le débogage.
  4. La méthode Parse() est déclenchée après Init() pour traiter la réponse, extraire les données à l'aide de sélecteurs CSS et les enregistrer au format JSON.

Fonctions et options de la bibliothèque IronWebScraper

La documentation mise à jour est disponible dans le fichier zip téléchargé avec la méthode d'installation manuelle (IronWebScraper Documentation.chm File), ou vous pouvez consulter la documentation en ligne pour la dernière mise à jour de la bibliothèque à https://ironsoftware.com/csharp/webscraper/object-reference/.

Pour commencer à utiliser IronWebScraper dans votre projet, vous devez hériter de la classe IronWebScraper.WebScraper, qui étend votre bibliothèque de classes et y ajoute une fonctionnalité de scraping. De plus, vous devez implémenter les méthodes Init() et Parse(Response response).

namespace IronWebScraperEngine
{
    public class NewsScraper : IronWebScraper.WebScraper
    {
        public override void Init()
        {
            throw new NotImplementedException();
        }

        public override void Parse(Response response)
        {
            throw new NotImplementedException();
        }
    }
}
Propriétés et fonctionsTaperDescription du projet
Init ()MéthodeUtilisé pour mettre en place le scraper
Parse (Response response)MéthodeUtilisé pour implémenter la logique que le scraper utilisera et la manière dont il traitera les données. Il est possible d'implémenter plusieurs méthodes pour différents comportements ou structures de page.
BannedUrls, AllowedUrls, BannedDomainsCollectionsUtilisé pour interdire/autoriser des URL et/ou des domaines. Ex : BannedUrls.Add("*.zip", "*.exe", "*.gz", "*.pdf"); Prend en charge les jokers et les expressions régulières.
ObeyRobotsDotTxtbooléenUtilisé pour activer ou désactiver la lecture et le suivi des directives dans robots.txt.
ObeyRobotsDotTxtForHost (string Host)MéthodeUtilisé pour activer ou désactiver la lecture et le suivi des directives dans robots.txt pour un certain domaine.
Scrape, ScrapeUniqueMéthode
ThrottleModeÉnumérationOptions Enum : ByIpAddress, ByDomainHostName. Permet une limitation intelligente du débit des requêtes, respectueuse des adresses IP des hôtes ou des noms de domaine.
EnableWebCache, EnableWebCache (TimeSpan cacheDuration)MéthodeActive la mise en cache des requêtes Web.
MaxHttpConnectionLimitIntDéfinit le nombre total de requêtes HTTP ouvertes autorisées (threads).
RateLimitPerHostDuréeDéfinit le délai minimal de politesse (pause) entre les requêtes adressées à un domaine ou une adresse IP donnée.
OpenConnectionLimitPerHostIntDéfinit le nombre autorisé de requêtes HTTP simultanées (threads) par nom d'hôte ou adresse IP.
WorkingDirectorystringDéfinit le chemin du répertoire de travail pour le stockage des données.

Exemples et exercices pratiques en situation réelle

Extraction de données d'un site web de films en ligne

Prenons un exemple dans lequel nous récupérons un site web de films.

Ajoutez une nouvelle classe et nommez-la MovieScraper :

 Ajouter Classe MovieScraper

Structure HTML

Voici une partie du code HTML de la page d'accueil que l'on voit sur le site web :

<div id="movie-featured" class="movies-list movies-list-full tab-pane in fade active">
    <div data-movie-id="20746" class="ml-item">
        <a href="https://website.com/film/king-arthur-legend-of-the-sword-20746/">
            <span class="mli-quality">CAM</span>
            <img data-original="https://img.gocdn.online/2017/05/16/poster/2116d6719c710eabe83b377463230fbe-king-arthur-legend-of-the-sword.jpg" 
                 class="lazy thumb mli-thumb" alt="King Arthur: Legend of the Sword"
                  src="https://img.gocdn.online/2017/05/16/poster/2116d6719c710eabe83b377463230fbe-king-arthur-legend-of-the-sword.jpg" 
                 style="display: inline-block;">
            <span class="mli-info"><h2>King Arthur: Legend of the Sword</h2></span>
        </a>
    </div>
    <div data-movie-id="20724" class="ml-item">
        <a href="https://website.com/film/snatched-20724/" >
            <span class="mli-quality">CAM</span>
            <img data-original="https://img.gocdn.online/2017/05/16/poster/5ef66403dc331009bdb5aa37cfe819ba-snatched.jpg" 
                 class="lazy thumb mli-thumb" alt="Snatched" 
                 src="https://img.gocdn.online/2017/05/16/poster/5ef66403dc331009bdb5aa37cfe819ba-snatched.jpg" 
                 style="display: inline-block;">
            <span class="mli-info"><h2>Snatched</h2></span>
        </a>
    </div>
</div>
HTML

Comme nous pouvons le constater, nous avons un identifiant de film, un titre et un lien vers une page détaillée. Commençons à rechercher ces données :

public class MovieScraper : WebScraper
{
    public override void Init()
    {
        License.LicenseKey = "LicenseKey";
        this.LoggingLevel = WebScraper.LogLevel.All;
        this.WorkingDirectory = AppSetting.GetAppRoot() + @"\MovieSample\Output\";
        this.Request("www.website.com", Parse);
    }

    public override void Parse(Response response)
    {
        foreach (var div in response.Css("#movie-featured > div"))
        {
            if (div.GetAttribute("class") != "clearfix")
            {
                var movieId = div.GetAttribute("data-movie-id");
                var link = div.Css("a")[0];
                var movieTitle = link.TextContentClean;
                Scrape(new ScrapedData() { { "MovieId", movieId }, { "MovieTitle", movieTitle } }, "Movie.Jsonl");
            }
        }           
    }
}

Cours de cinéma structuré

Pour stocker nos données formatées, implémentons une classe film :

public class Movie
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string URL { get; set; }
}

Mise à jour de notre code pour utiliser la classe Movie :

public class MovieScraper : WebScraper
{
    public override void Init()
    {
        License.LicenseKey = "LicenseKey";
        this.LoggingLevel = WebScraper.LogLevel.All;
        this.WorkingDirectory = AppSetting.GetAppRoot() + @"\MovieSample\Output\";
        this.Request("https://website.com/", Parse);
    }

    public override void Parse(Response response)
    {
        foreach (var div in response.Css("#movie-featured > div"))
        {
            if (div.GetAttribute("class") != "clearfix")
            {
                var movie = new Movie
                {
                    Id = Convert.ToInt32(div.GetAttribute("data-movie-id")),
                    Title = div.Css("a")[0].TextContentClean,
                    URL = div.Css("a")[0].Attributes["href"]
                };
                Scrape(movie, "Movie.Jsonl");
            }
        }
    }
}

Extraction de données détaillée de pages

Étendons notre classe Movie pour avoir de nouvelles propriétés pour les informations détaillées :

public class Movie
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string URL { get; set; }
    public string Description { get; set; }
    public List<string> Genre { get; set; }
    public List<string> Actor { get; set; }
}

Accédez ensuite à la page détaillée pour extraire les données, en utilisant les fonctionnalités étendues d'IronWebScraper :

public class MovieScraper : WebScraper
{
    public override void Init()
    {
        License.LicenseKey = "LicenseKey";
        this.LoggingLevel = WebScraper.LogLevel.All;
        this.WorkingDirectory = AppSetting.GetAppRoot() + @"\MovieSample\Output\";
        this.Request("https://domain/", Parse);
    }

    public override void Parse(Response response)
    {
        foreach (var div in response.Css("#movie-featured > div"))
        {
            if (div.GetAttribute("class") != "clearfix")
            {
                var movie = new Movie
                {
                    Id = Convert.ToInt32(div.GetAttribute("data-movie-id")),
                    Title = div.Css("a")[0].TextContentClean,
                    URL = div.Css("a")[0].Attributes["href"]
                };
                this.Request(movie.URL, ParseDetails, new MetaData() { { "movie", movie } });
            }
        }           
    }

    public void ParseDetails(Response response)
    {
        var movie = response.MetaData.Get<Movie>("movie");
        var div = response.Css("div.mvic-desc")[0];
        movie.Description = div.Css("div.desc")[0].TextContentClean;
        movie.Genre = div.Css("div > p > a").Select(element => element.TextContentClean).ToList();
        movie.Actor = div.Css("div > p:nth-child(2) > a").Select(element => element.TextContentClean).ToList();

        Scrape(movie, "Movie.Jsonl");
    }
}

Fonctionnalités de la bibliothèque IronWebScraper

Fonctionnalité HttpIdentity

Certains systèmes exigent que l'utilisateur soit connecté pour consulter le contenu ; utilisez HttpIdentity pour les identifiants :

HttpIdentity id = new HttpIdentity
{
    NetworkUsername = "username",
    NetworkPassword = "pwd"
};
Identities.Add(id);

Activer le cache Web

Les pages demandées en cache sont réutilisées pendant le développement :

public override void Init()
{
    License.LicenseKey = "LicenseKey";
    this.LoggingLevel = WebScraper.LogLevel.All;
    this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
    EnableWebCache();
    this.Request("http://www.WebSite.com", Parse);
}

Étranglement

Contrôler le nombre de connexions et la vitesse :

public override void Init()
{
    License.LicenseKey = "LicenseKey";
    this.LoggingLevel = WebScraper.LogLevel.All;
    this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
    this.MaxHttpConnectionLimit = 80;
    this.RateLimitPerHost = TimeSpan.FromMilliseconds(50);
    this.OpenConnectionLimitPerHost = 25;
    this.ObeyRobotsDotTxt = false;
    this.ThrottleMode = Throttle.ByDomainHostName;
    this.Request("https://www.Website.com", Parse);
}

propriétés d'étranglement

  • MaxHttpConnectionLimit
    nombre total de requêtes HTTP ouvertes autorisées (threads)
  • RateLimitPerHost
    délai minimum de politesse (pause) entre les requêtes vers un domaine ou une adresse IP donnée
  • OpenConnectionLimitPerHost
    nombre autorisé de requêtes HTTP simultanées (threads) par nom d'hôte ou adresse IP
  • ThrottleMode
    Fait que le WebScraper régule intelligemment les requêtes non seulement par nom d'hôte, mais aussi par adresses IP des serveurs hôtes. C'est une pratique courante dans le cas où plusieurs domaines extraits seraient hébergés sur la même machine.

Annexe

Comment créer une application Windows Forms ?

Utilisez Visual Studio 2013 ou une version ultérieure.

  1. Ouvrez Visual Studio.

  2. Fichier -> Nouveau -> Projet  Enterprise 2015

  3. Choisissez Visual C# ou VB -> Windows -> Application Windows Forms.  Créer Application Windows

Nom du projet : IronScraperSample
Emplacement : Sélectionnez un emplacement sur votre disque.

Comment créer une application Web Forms ASP.NET ?

  1. Ouvrez Visual Studio.  Enterprise 2015

  2. Fichier -> Nouveau -> Projet  Fichier Nouveau Projet

  3. Choisissez Visual C# ou VB -> Web -> Application Web ASP.NET (.NET Framework).  Application Web ASP .NET

Nom du projet : IronScraperSample
Emplacement : Sélectionnez un emplacement sur votre disque.

  1. Dans vos modèles ASP.NET, sélectionnez un modèle vide et cochez la case Formulaires Web.  Modèles ASP .NET

  2. Votre projet de formulaire Web ASP.NET de base est créé.  Projet Formulaire Web ASP .NET

Téléchargez ici le code source complet du projet d'exemple du tutoriel .

Questions Fréquemment Posées

Comment extraire des données de sites Web en C# ?

Vous pouvez utiliser IronWebScraper pour extraire des données de sites Web en C#. Commencez par installer la bibliothèque via NuGet et configurez une application console de base pour commencer à extraire efficacement les données Web.

Quelles sont les conditions préalables pour le scraping Web en C# ?

Pour effectuer du scraping Web en C#, vous devez avoir des compétences de base en programmation en C# ou VB.NET, comprendre les technologies Web telles que HTML, JavaScript et CSS, ainsi qu'une familiarité avec le DOM, XPath et les sélecteurs CSS.

Comment puis-je installer une bibliothèque de scraping Web dans un projet .NET ?

Pour installer IronWebScraper dans un projet .NET, utilisez la console du gestionnaire de packages NuGet avec la commande Install-Package IronWebScraper ou naviguez à travers l'interface du gestionnaire de packages NuGet dans Visual Studio.

Comment puis-je implémenter la limitation des requêtes dans mon scraper Web ?

IronWebScraper vous permet d'implémenter la limitation des requêtes pour gérer la fréquence des requêtes envoyées à un serveur. Cela peut être configuré en utilisant des paramètres tels que MaxHttpConnectionLimit, RateLimitPerHost et OpenConnectionLimitPerHost.

Quel est le but d'activer la mise en cache Web dans le scraping Web ?

L'activation de la mise en cache Web dans le scraping Web aide à réduire le nombre de requêtes envoyées à un serveur en stockant et réutilisant les réponses précédentes. Cela peut être configuré dans IronWebScraper en utilisant la méthode EnableWebCache.

Comment l'authentification peut-elle être gérée dans le scraping Web ?

Avec IronWebScraper, vous pouvez utiliser HttpIdentity pour gérer l'authentification, permettant l'accès au contenu derrière les formulaires d'identification ou les zones restreintes, autorisant ainsi le scraping de ressources protégées.

Quel est un exemple simple de scraper Web en C# ?

Le 'HelloScraper' est un exemple simple fourni dans le tutoriel. Il démontre la configuration d'un scraper Web de base en utilisant IronWebScraper, y compris comment initier des requêtes et analyser les réponses.

Comment puis-je étendre mon scraper Web pour gérer des structures de pages complexes ?

En utilisant IronWebScraper, vous pouvez étendre votre scraper pour gérer des structures de pages complexes en personnalisant les méthodes Parse pour traiter différents types de pages, permettant des stratégies d'extraction de données flexibles.

Quels sont les avantages d'utiliser une bibliothèque de scraping Web ?

Utiliser une bibliothèque de scraping Web telle qu'IronWebScraper offre des avantages tels que l'extraction de données simplifiée, la gestion de domaine, la limitation des requêtes, la mise en cache, et le support de l'authentification, permettant de gérer efficacement les tâches de scraping Web.

How can developers extend the functionality of IronWebScraper for specific data extraction needs?

Developers can inherit from the IronWebScraper.WebScraper class to extend functionality and implement custom data extraction logic by overriding methods like Init() and Parse(Response response).

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Prêt à commencer?

Nuget Downloads 143,929Version :2026.9vient de sortir

Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package IronWebScraper
nuget.org/packages/IronWebScraper/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et recherchez "IronWebScraper"
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

  1. Téléchargez et décompressez IronWebScraper à un emplacement tel que ~/Libs dans votre répertoire de solution
  2. Dans Visual Studio Solution Explorer, cliquez avec le bouton droit sur Références. Sélectionnez Parcourir, "IronWebScraper.dll"

Licences à partir de 749 $

Vous avez une question ? Contactez notre équipe de développement.

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise