Apiasp.Net Core Web Scraping : Votre guide pour 2023

WebscrapingAPI le 15 novembre 2022

Apiasp.net core web scraping

Le web scraping est une technique préprogrammée permettant d'extraire d'importants volumes de données de sites. La plupart de ces données sont non organisées et au format HTML. Elles sont ensuite transformées en informations structurées dans une base de données ou une feuille de calcul afin d'être utilisées dans d'autres programmes. 

Pour extraire des données de sites web, le web scraping peut être réalisé selon différentes méthodes. Il s'agit notamment d'exploiter des services en ligne, des API particulières ou même d'écrire votre propre code à partir de zéro pour le web scraping. Vous pouvez accéder à des données structurées sur plusieurs sites web.

Bien qu'il s'agisse souvent de la meilleure option, certains sites web n'ont pas la capacité de fournir aux consommateurs d'énormes volumes de données de manière ordonnée ou ne sont pas très avancés en termes d'innovation. Dans ce cas, il est préférable de recourir au web scraping pour collecter les données du site web.

Python est aujourd'hui le langage de programmation le plus utilisé pour le web scraping. Pour le web scraping, Python met à votre disposition plusieurs bibliothèques. .NET peut également être utilisé pour l'exploration simultanée du web. Nous pouvons extraire des données de nombreux sites web à l'aide d'une API tierce.

Une API populaire pour le web scraping en .NET s'appelle WebScrapingAPI. Récemment, ils ont inclus l'édition .NET Core pour le web scraping également.

blog-image

Différence entre Web Scraping et Web Crawling 

Les navigateurs Web sont utilisés pour afficher des métadonnées sur les pages Web trouvées sur l'Internet, qui abrite une quantité substantielle de données. Les utilisateurs peuvent simplement se déplacer entre les sites web et interpréter les données à l'aide de pages d'affichage basées sur un navigateur. 

Les termes "web crawling" et "web scraping" sont utilisés pour décrire le processus d'extraction du code d'un point de vue. Le web scraping est le processus d'analyse d'une page web et d'obtention d'informations à partir de celle-ci. La recherche de liens web et la réception itérative de leur contenu sont appelées "web crawling". 

Ces deux opérations sont effectuées par une application, car la découverte de nouvelles connexions nécessite le grattage de pages web. Les deux expressions, qui sont parfois utilisées comme synonymes, font référence à la procédure d'obtention d'informations. Elles ont cependant des objectifs différents. 

Comment et où ces connaissances peuvent-elles être mises à profit ?

Les réponses peuvent être trouvées en ligne en plus grand nombre que le nombre de sites web. Cette connaissance peut être un outil précieux pour la création d'applications, et la compréhension de la manière d'écrire un tel code pourrait être appliquée aux tests automatisés des sites web.

Dans ce blog, nous aborderons deux méthodes d'exploration et de récupération de données sur le web en exploitant les navigateurs et les requêtes HTTP de base, ainsi que les avantages et les inconvénients de chacune d'entre elles.

Utilisation des requêtes HTTP et des navigateurs Web pour télécharger des contenus Web

Étant donné que presque tout est en ligne de nos jours, vous pouvez sans aucun doute trouver un module permettant d'envoyer des requêtes HTTP dans n'importe quel langage de programmation. Les requêtes HTTP simples sont rapides. L'utilisation de navigateurs web tels que Firefox et Google Chrome prend plus de temps. 

Ils se comportent et sont présentés différemment, modifiant la manière dont chaque activité est et est montrée pour être facilement lisible et utilisée pour prendre en compte l'affichage des styles et l'exécution des scripts sur les pages web. Les navigateurs web gaspillent parfois des ressources. Par exemple, une simple requête HTTP peut suffire si vous essayez d'extraire du texte d'une page web et de le télécharger sous forme de texte simple.

Néanmoins, l'utilisation de JavaScript étant très répandue, certains éléments de nombreux sites web ne peuvent pas être affichés s'ils ne sont pas exécutés. Dans ce cas, le téléchargement du contenu web est facilité par l'utilisation d'un navigateur.

Analyse CSS et XPath

XPath et CSS sont deux méthodes d'analyse de texte souvent utilisées. Un langage de balisage, XPath, est utilisé pour identifier des éléments spécifiques dans les fichiers XML et Html. 

Chacune contient une structure spécifique, et ce modèle peut être suivi lors de la rédaction d'une requête. Les sélecteurs CSS sont un moyen de choisir des éléments qui utilisent un modèle de chaîne et sont légèrement comparables à XPath parce que les styles CSS sont appliqués au-dessus de la structure HTML.

Préparation de la démo

Ces démonstrations utilisent les environnements C# et .NET core 3.1. Ces API doivent fonctionner sur .NET 4x car elles n'ont pas encore beaucoup changé récemment. Un exemple de site (une application ASP.NET Core MVC) avec trois pages est également inclus dans le dépôt :

  • Pages avec un tableau simple 
  • Pages avec un "lien caché" et 
  • Un bouton qui ne s'affiche qu'après un délai d'attente

Produire une API Web ASP.NET Core à l'aide de Visual Studio 2022

Avec .NET 6.0, Visual Studio 2022 peut être utilisé pour développer une ASP.NET Core Web app API. Avec Visual Studio, vous devez donner un nom légitime au projet et sélectionner le modèle ASP.NET Core Web app API.

blog-image

Vous avez le framework net core web API 6.0 en option. En outre, vous pouvez sélectionner la prise en charge par défaut de l'API ouverte. Pour le projet, cela se traduira par des métadonnées sass. 

Les API énumérées ici doivent être installées à l'aide du gestionnaire de paquets NuGet.

Pour les pages statiques

Mise en place

Si vous utilisez le langage C#, il y a de fortes chances que vous travailliez déjà avec Visual Studio. Dans ce billet, un projet d'application web basé sur MVC.NET Core est utilisé (Model View Controller). 

Utilisez le gestionnaire de paquets NuGet pour incorporer les bibliothèques nécessaires utilisées tout au long de ce guide après avoir créé un tout nouveau projet.

blog-image

Pour télécharger les paquets dans NuGet, sélectionnez l'option "Browse" et entrez "HTML Agility Pack".

blog-image

Vous êtes maintenant prêt à procéder à l'installation du paquet. Le tableau HTML acquis peut être facilement analysé à l'aide de ce logiciel pour localiser les balises et les données que vous souhaitez sauvegarder. 

blog-image

Les API suivantes doivent être incluses dans le code avant que vous ne commenciez à coder le scraper via le studio visuel :

Utilisation de C# pour envoyer une requête HTTP à une page Web

Prenons l'exemple d'un projet dans lequel il vous est demandé de parcourir Wikipédia à la recherche d'informations sur des programmeurs informatiques connus. S'il n'y avait pas d'article à ce sujet, Wikipédia ne serait pas Wikipédia, n'est-ce pas ?

 https://en.wikipedia.org/wiki/list-of-programmers 

Une liste de développeurs avec des liens hypertextes vers la page Wikipédia de chaque personne peut être trouvée dans cet article. Pour une utilisation ultérieure, vous pouvez récupérer la liste et enregistrer les données au format CSV (qu'Excel, par exemple, peut facilement traiter).

L'idée principale derrière le web scraping en ligne est de localiser un site web qui contient les données requises, d'utiliser C# pour récupérer les informations et de les sauvegarder pour un usage ultérieur. Il ne s'agit là que d'un exemple simple de ce que vous pouvez accomplir avec le web scraping.

Les hyperliens d'une page de catégorie supérieure peuvent être utilisés pour explorer des pages web dans le cadre de projets plus complexes. Cependant, concentrons-nous sur cette page spécifique de Wikipedia pour les exemples suivants.

Obtenir du HTML avec .HttpClient NET Core Web APIs

Un client HTTP intégré pour .NET, appelé HttpClient, est disponible par défaut. Aucune bibliothèque tierce indépendante ni aucun plugin n'est nécessaire, car le domaine Net.HTTP s'occupe de tout. En outre, il comprend une prise en charge native des appels différés.

L'exemple suivant montre comment il est facile d'obtenir le contenu d'une URL de manière asynchrone et non bloquante en utilisant GetStringAsync()

private static async Task<string> CallUrl(string full URL)

{

HttpClient client = new HttpClient() ;

var response = await client.GetStringAsync(full URL) ;

réponse en retour ;

}

Il suffit de générer un tout nouvel objet HttpClient, d'appeler GetStringAsync(), d'"attendre" qu'il se termine, puis de donner le résultat à l'appelant. Maintenant que la technologie a été ajoutée à la classe de contrôleur, vous pouvez appeler CallUrl() à partir de la méthode Index() sans autre forme de procès. C'est ce que nous allons faire.

public IActionResult Index(){

string url ="https://en.wikipedia.org/wiki/List_of_programmers";

var response = CallUrl(url).Result ;

return View();}

Ici, nous spécifions l'URL de Wikipedia dans l'URL, nous l'appelons avec callUrl() et nous enregistrons le résultat dans les variables dépendantes.

Le code nécessaire à l'envoi de la requête HTTP est terminé. Bien que nous ne l'ayons pas encore traité, c'est une excellente idée d'exécuter le code immédiatement pour s'assurer que le HTML de Wikipédia est reçu et qu'il n'y a pas d'erreurs.

Pour ce faire, nous allons d'abord placer un arrêt au retour de View() dans la méthode Index(). Cela permettra de s'assurer que vous êtes en mesure de voir les résultats à l'aide de l'interface utilisateur du débogueur de Visual Studio.

En sélectionnant l'option "Exécuter" dans la barre d'outils de Visual Studio, vous pouvez tester le code mentionné ci-dessus : Au point d'arrêt, Visual Studio s'arrête, ce qui vous permet de voir l'état actuel de l'application.

Le fait de survoler la variable révèle que le serveur a renvoyé une page HTML valide, ce qui indique que nous devrions être prêts à partir. Si vous choisissez "HTML Visualizer" dans le menu contextuel, vous verrez un aperçu de la page HTML.

Analyse HTML

Il est maintenant temps d'analyser la table HTML qui a été récupérée. Une suite d'analyseurs bien connue appelée HTML Agility Pack peut être facilement intégrée à LINQ, par exemple.

Vous devez comprendre la structure de la page avant d'analyser le tableau HTML afin d'identifier précisément les éléments à récupérer. Les outils de développement de votre navigateur seront encore une fois très utiles dans cette situation, car ils vous permettent d'examiner en détail l'arbre DOM.

Nous verrons sur notre page Wikipédia que les liens de notre table des matières sont nombreux et que nous n'en aurons donc pas besoin. Il existe également d'autres liens supplémentaires, dont certains ne sont pas absolument nécessaires pour notre collecte de données (comme les liens d'édition). 

En y regardant de plus près, nous constatons que chaque lien qui nous intéresse est contenu dans un parent li>. Nous savons maintenant que les li> sont utilisés à la fois pour le tableau de contenu de la page et pour nos composants de lien réels basés sur l'arbre DOM.

Comme nous ne voulons pas de la table des matières, vous devez vous assurer que ces éléments li> sont filtrés. Heureusement, ils ont des classes HTML distinctes, de sorte que nous pouvons facilement omettre tous les éléments li> avec des classes de section dans le code.

Il est temps de coder ! Nous allons commencer par inclure la méthode ParseHtml dans notre classe de contrôleur ().

Ici, nous construisons d'abord une instance HtmlDocument, puis nous téléchargeons la page HTML que nous avons précédemment téléchargée par l'intermédiaire de CallUrl (). Maintenant que nous possédons une représentation DOM légitime de notre page, nous pouvons commencer à la récupérer.

  • Nous recevons tous les descendants li> de Descendants ()
  • Pour filtrer les éléments qui utilisent les classes HTML susmentionnées, nous utilisons LINQ (Where()).
  • Dans nos listes de chaînes wikiLink, nous parcourons (pour chacun) nos liens et conservons leurs URL (relatives) en tant qu'URL relatives.

Nous rendons à notre interlocuteur la liste des chaînes de caractères.

XPath

Nous n'aurions pas été obligés de choisir les éléments individuellement, et il est important de le remarquer. Nous l'avons fait uniquement pour donner le bon exemple.

L'application d'une requête XPath sera beaucoup plus pratique dans les programmes du monde réel. Cela permettrait de faire tenir l'ensemble de notre processus de sélection en une seule phrase.

Comme dans notre procédure conventionnelle, nous choisirons tout (//) li> qui n'a pas la classe spécifiée (not(contains())).

Création d'un fichier pour l'exportation des données scrapées

Le texte du tableau HTML a été téléchargé de Wikipedia, analysé/traité dans un arbre DOM, et tous les liens nécessaires ont été extraits avec succès. Nous disposons ainsi d'une liste générale des liens hypertextes de la page.

Les liens doivent maintenant être exportés au format CSV. Pour écrire les informations de la liste générale dans un fichier, nous allons créer une nouvelle méthode appelée WriteToCsv(). La procédure complète est présentée dans le code suivant. 

Il crée un fichier sur le disque dur local appelé "links.csv" et y enregistre les hyperliens extraits. Il s'agit donc d'écrire des données dans un fichier sur un disque local en tirant parti des API natives du cadre.NET. 

Conclusion

Avec des outils comme WebScrapingAPI, il est très simple de construire un projet de crawler et de collecter rapidement les informations requises. C# et .NET, en général, contiennent toutes les ressources et bibliothèques nécessaires pour vous permettre de mettre en œuvre votre propre scraper de données.

blog-image

Les différentes méthodes pour éviter d'être bloqué ou de voir son débit réduit par le serveur sont un sujet que nous n'avons que brièvement abordé. En général, plus que les restrictions techniques, c'est ce qui fait obstacle au web scraping.

Si vous préférez vous concentrer sur vos données plutôt que de vous occuper des agents utilisateurs, des restrictions de taux, des proxies et des difficultés liées à JavaScript, jetez un coup d'œil aux fonctionnalités de pointe de WebScrapingAPI. 

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
La science du Web ScrapingScrapy vs. Selenium : Un guide complet pour choisir le meilleur outil de Web Scraping

Explorez la comparaison approfondie entre Scrapy et Selenium pour le web scraping. De l'acquisition de données à grande échelle à la gestion de contenus dynamiques, découvrez les avantages, les inconvénients et les caractéristiques uniques de chacun. Apprenez à choisir le meilleur framework en fonction des besoins et de l'échelle de votre projet.

WebscrapingAPI
avatar de l'auteur
WebscrapingAPI
14 minutes de lecture
vignette
Cas d'utilisationL'utilisation du Web Scraping pour les données alternatives en finance : Un guide complet pour les investisseurs

Explorez le pouvoir de transformation du web scraping dans le secteur financier. Des données sur les produits à l'analyse des sentiments, ce guide donne un aperçu des différents types de données web disponibles pour les décisions d'investissement.

Mihnea-Octavian Manolache
avatar de l'auteur
Mihnea-Octavian Manolache
13 minutes de lecture
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