Comment extraire des données en 5 étapes faciles

Publié: 2020-02-17
Table des matières afficher
Comment Scraper des données de 5 manières simples
1. Choisissez un langage de programmation ou un outil pour le grattage de données
2. Gratter une seule page Web et analyser les composants
3. Décidez d'une stratégie de nettoyage et de stockage des données
4. Créez une liste de pages Web ou écrivez une expression régulière pour le grattage de données
5. Écrivez le code et testez
Méthodes alternatives de récupération de données
Utilisez la fonction de filtre Excel pour gratter les données
Utilisez la fonction Text-to-Columns dans Microsoft Word pour séparer les données par colonne
Utiliser IMPORTXML dans les feuilles Google
Utiliser IMPORTHTML dans Google Sheets
Utilisation des extensions chromées
Conclusion

À quelle fréquence avez-vous besoin d'extraire des données d'un site Web pour votre travail et cela semble trop pénible ? Ce billet de blog vous apprendra comment récupérer des données en 5 étapes faciles.

Cet article est destiné aux professionnels du logiciel qui ont besoin d'extraire des données de pages Web ou de fichiers PDF et qui souhaitent que le processus soit aussi rapide et indolore que possible. Il existe de nombreuses façons de récupérer des données, mais cet article se concentrera sur quelques-unes des méthodes les plus populaires utilisées par les développeurs professionnels : XPath, Regular Expressions, Beautiful Soup (BSA), Scrapy, Python Requests Library (PRL) et Selenium Webdriver. Ces outils de grattage peuvent tous être facilement installés avec des instructions fournies pour chacun. Un tableau résumant ces outils est inclus ci-dessous décrivant leurs avantages/inconvénients et des liens pour plus d'informations à leur sujet le cas échéant. Le tableau comprend d'autres méthodes moins populaires que j'ai également essayées et qui sont incluses par souci d'exhaustivité.

Le grattage de données sur un site Web peut être effectué dans n'importe quelle langue. Dans cet article, je vais vous montrer comment scraper des données en utilisant Python car il est très facile à installer et assez facile à apprendre surtout si vous connaissez déjà un autre langage de programmation puisque la syntaxe est similaire à Java, C et PHP. Python prend en charge plusieurs bibliothèques pour extraire les données décrites dans le tableau. Le scraping est un outil que tout le monde devrait savoir utiliser car il fournit des informations précieuses sur votre marché cible, vos concurrents et/ou vos clients.

Le scraping Web peut vous aider à extraire différents types de données. Vous pouvez explorer des annonces immobilières , des données d'hôtels ou même des données de produits avec des prix sur des sites Web de commerce électronique en écrivant quelques lignes de code. Mais si vous envisagez d'explorer le Web et d'extraire des données, vous devez vous occuper de certaines choses. Il est important de s'assurer que les données extraites sont dans un format utilisable. Votre code peut extraire des données de plusieurs sites Web. Les données extraites sont propres et ne donnent pas de résultats erronés lors de l'exécution d'algorithmes. Cela dit, si vous souhaitez écrire votre code ou créer un petit projet de grattage Web pour explorer les données des sites Web, vous pouvez le faire en cinq étapes simples.

5 façons simples de récupérer des données

Comment Scraper des données de 5 manières simples

1. Choisissez un langage de programmation ou un outil pour le grattage de données

« Un homme est aussi bon que ses outils ». Par conséquent, vous devez choisir vos outils de grattage Web en fonction de vos besoins. Bien que certains logiciels prêts à l'emploi puissent sembler faciles à utiliser, ils peuvent ne pas vous permettre d'effectuer de nombreuses modifications de configuration. Dans le même temps, de nombreux outils peuvent ne pas avoir de plugin pour enregistrer les données que vous avez récupérées dans une base de données ou sur le cloud. En ce qui concerne les langages de programmation utilisés aujourd'hui pour le grattage des données, il y a Node.js, Python, Ruby et plus encore. Mais parmi ceux-ci, Python est le plus populaire grâce à sa courbe d'apprentissage plus facile, sa syntaxe simple, la disponibilité de plusieurs bibliothèques externes et le langage étant open source.

Il existe plusieurs bibliothèques telles que BeautifulSoup et Scrapy qui peuvent être utilisées pour explorer des pages Web, créer des araignées d'exploration Web et exécuter des tâches de grattage à des intervalles de temps spécifiques. Python offre une immense flexibilité lorsqu'il s'agit d'intégrer d'autres systèmes à votre moteur de grattage. Vous pouvez facilement enregistrer vos données récupérées sur votre machine locale, dans des bases de données, sur S3 Storage ou même les vider dans un fichier Word ou Excel .

2. Gratter une seule page Web et analyser les composants

Avant de commencer à récupérer des informations sur les produits à partir, par exemple, d'un millier de pages de produits sur Amazon , vous devez accéder à la page et obtenir l'intégralité de la page Html pour l'analyser et décider d'une stratégie. Les données des pages HTML peuvent résider dans des paires clé-valeur spécifiques dans les balises ou dans le texte des balises. Vous pouvez utiliser des bibliothèques comme BeautifulSoup pour spécifier la balise exacte dont vous souhaitez extraire les données sur chaque page Web, puis exécuter le code en boucle. De cette façon, pour chaque page Web de produit, votre code s'exécutera et extraira les mêmes informations, par exemple les détails du prix.

3. Décidez d'une stratégie de nettoyage et de stockage des données

Avant même de commencer à gratter les données, vous devez décider de l'endroit où vous allez stocker les données. En effet, la façon dont vous traitez les données dépendra de l'endroit où vous les stockerez. Plusieurs options sont disponibles. Vous pouvez choisir entre les bases de données NoSQL et SQL, selon que les données que vous récupérez seront structurées ou non. Pour les données non structurées, vous pouvez choisir des bases de données SQL car vous pouvez stocker les données dans des lignes constituées d'un ensemble d'attributs. Pour les données non structurées, où il n'y a pas d'attributs définis, vous pouvez opter pour des bases de données NoSQL. En termes de base de données dans laquelle enregistrer les données, pour SQL, vous pouvez choisir MySQL ou Postgres. Amazon RDS propose des bases de données sur le cloud où vous pouvez stocker vos données et payer en fonction de l'utilisation.

Pour NoSQL, vous pouvez choisir l'une de leurs solutions entièrement gérées et extrêmement rapides, comme DynamoDb ou ElasticSearch . Différentes bases de données ont des avantages qui offrent une récupération rapide, certaines offrent un stockage moins cher par To . La base de données que vous choisissez dépend de votre cas d'utilisation spécifique et donc. Certaines recherches sont nécessaires à ce sujet avant de vous décider. Si vous avez besoin de stocker des images et des vidéos volumineuses, vous pouvez utiliser AWS S3 ou Glacier . Ce dernier est utilisé lorsque vous souhaitez stocker des quantités massives de données dans un format archivé. Vous n'auriez pas besoin d'y accéder souvent alors que la première est la solution la plus utilisée. Cela agit comme quelque chose comme un disque dur en ligne. Vous pouvez créer des dossiers et y enregistrer des fichiers.

Stratégie de nettoyage des données

4. Créez une liste de pages Web ou écrivez une expression régulière pour le grattage de données

Bien que vous puissiez tester votre code sur une seule page Web, vous devez vouloir explorer des dizaines ou des centaines de pages à cause desquelles vous entreprenez ce projet. Habituellement, si vous allez explorer quelques pages Web, vous pouvez enregistrer les liens dans un tableau et boucler dessus lors du grattage des pages. Une solution meilleure et plus fréquemment utilisée consiste à utiliser une regex . En termes simples, il s'agit d'un moyen programmatique d'identifier les sites Web avec des structures d'URL similaires.

Par exemple, vous souhaiterez peut-être explorer les données produit de tous les ordinateurs portables sur Amazon. Maintenant, vous pouvez voir que toutes les URL commencent par " www.amazon.com/laptop/ <laptopModelNo>/prodData". Vous pouvez répliquer ce format à l'aide de regex afin que toutes ces URL soient extraites et que votre fonction de grattage Web ne s'exécute que sur ces URL . Et pas toutes les URL du site Web d'Amazon. Si vous avez trop de pages Web à explorer, nous vous recommandons d'utiliser une approche de traitement parallèle pour explorer une dizaine de pages Web à tout moment . Si vous récupérez des pages Web et en extrayez des liens, puis que vous récupérez les pages Web auxquelles ces liens mènent, vous pouvez utiliser une approche arborescente pour explorer plusieurs pages enfants issues d'une page Web racine en même temps.

Regex

5. Écrivez le code et testez

Tout ce dont nous avons discuté jusqu'à présent a été la préparation. Pour l'acte final d'exécuter le code et de faire le travail. Le code de scraping Web fonctionne rarement exactement comme vous l'attendez. En effet, toutes les pages Web que vous essayez d'explorer n'ont pas la même structure. Par exemple, vous exécutez votre code de scraping sur 100 pages de produits et constatez que seulement 80 d'entre elles ont été scrapées. La raison en est que 20 pages peuvent être en rupture de stock et que la structure de leur page Web est différente. Ces exceptions ne seront pas prises en compte lorsque vous écrivez le code. Mais après quelques itérations, vous pouvez apporter les modifications requises. Et extrayez les données de toutes les pages Web dont vous avez besoin.

Test de code

Méthodes alternatives de récupération de données

Utilisez la fonction de filtre Excel pour gratter les données

C'est le moyen le plus simple d'extraire des données de n'importe quelle page Web. Il ne nécessite aucun outil supplémentaire à l'exception d'Excel et il ne laissera pas d'empreinte sur votre site Web cible ou votre système, c'est-à-dire qu'aucun appel d'API n'est effectué, aucun cookie n'est défini, etc. Si vous avez accès à un PC/Mac avec Excel installé, c'est de loin le moyen le plus simple de récupérer des données.

Comment ça fonctionne

Dans Excel, ouvrez une nouvelle feuille et écrivez l'URL de votre site Web cible dans la première cellule (par exemple http://www.joes-hardware-store.com/). Dans la cellule suivante, entrez une formule de filtre de données HTML ou XPath (voir le tableau ci-dessous pour la formule de filtre de données XPath utilisée dans cet exemple) qui extraira les données de votre page Web cible. Si vous voulez gratter plusieurs colonnes de données, répétez l'étape 1 pour chaque colonne de données et mettez-les côte à côte.

Comment obtenir des filtres de données XPath dans Excel

Dans Excel, cliquez sur Fichier > Options > Avancé puis allez dans la section Affichage. Cochez la case à côté de "Afficher l'onglet Développeur dans le ruban" puis cliquez sur OK. Ceci est illustré dans la capture d'écran 1 ci-dessous :

Dans Excel, cliquez sur Développeur > Référence puis faites défiler vers le bas et recherchez Microsoft XML Document 3.0 (comme illustré dans la capture d'écran 2 ci-dessous) :

Cliquez sur MSXML3 Apress puis cliquez sur OK (comme indiqué dans la capture d'écran 3 ci-dessous) :

Maintenant que nous avons installé la référence MSXML3, essayons. Dans Excel, entrez l'URL de votre page Web cible dans la cellule A1, puis une formule de filtre de données XPath dans la cellule B1 (par exemple, pour obtenir le prix de l'article « 123 » sur une page Web, placez la formule de filtre de données XPath dans la cellule B1 comme indiqué dans capture d'écran 4 et 5 ci-dessous) :

Maintenant, copiez le contenu de la cellule B1 dans toutes les cellules restantes à l'aide du raccourci CTRL+C d'Excel. Ceci est illustré dans la capture d'écran 6 ci-dessous :

Copiez l'URL de votre page Web cible (dans la cellule A1) dans la barre d'adresse d'Excel. Appuyez sur Entrée pour le charger dans le navigateur et voir vos données apparaître comme par magie dans Excel

Comme vous pouvez le constater, il s'agit d'un moyen extrêmement efficace de récupérer des données. Il n'y a plus d'empreinte sur le site Web cible ou sur votre système, c'est-à-dire qu'aucun appel API n'est effectué, aucun cookie n'est défini, etc.

Utilisez la fonction Text-to-Columns dans Microsoft Word pour séparer les données par colonne

Cette méthode est un peu plus compliquée que la première, mais elle peut être utilisée pour extraire des données de n'importe quel site Web qui a des colonnes clairement définies. Il nécessite MS Word et Excel ainsi que des outils supplémentaires décrits ci-dessous. La bonne nouvelle est que cette méthode laisse une empreinte sur votre site Web cible, donc si vous grattez des sites Web à des fins de marketing et que vous souhaitez éviter d'être détecté, cette méthode n'est pas pour vous.

Comment ça fonctionne

Dans MS Word, créez un nouveau document, par exemple Joe's Hardware Store Product Listing Scraping Tool, puis copiez/collez votre page Web cible dans la zone de texte (voir capture d'écran 1 ci-dessous). Sélectionnez la fonction Goto dans MS Word en appuyant sur CTRL + G puis tapez exactement <<!DOCTYPE HTML [ENTER]. Ceci est illustré dans la capture d'écran 2 ci-dessous :

Sélectionnez la fonction Exécuter dans MS Word en appuyant sur ALT + F5 (comme indiqué dans la capture d'écran 3) et vous devriez voir un résultat similaire à celui-ci (voir capture d'écran 4 ci-dessous) :

Dans Excel, sélectionnez Filtres > Texte vers les colonnes comme indiqué dans la capture d'écran 5 ci-dessous :

Sélectionnez Délimité puis choisissez votre séparateur délimité dans le menu déroulant (pour cet exemple, nous utilisons la virgule qui est sélectionnée par défaut).

Maintenant, cliquez sur Suivant et définissez l'emplacement des "virgules", c'est-à-dire séparez vos données Web en colonnes (par exemple, j'utilise "," comme séparateur). Ensuite, cliquez sur Suivant et définissez comment vous voulez qu'Excel gère les cellules vides, c'est-à-dire les ignorer ou les remplacer par une valeur vide (pour cet exemple, nous allons le définir sur "ignorer les valeurs vides"). Ensuite, cliquez sur Terminer pour terminer la fonction Text-to-Columns.

Si votre page Web cible n'a pas de colonnes clairement définies, vous pouvez la définir sur "Valeurs de remplacement" comme indiqué dans la capture d'écran 6 ci-dessous :

Comme vous pouvez le voir sur la capture d'écran 7 ci-dessus, mes données ont été séparées avec succès en colonnes de texte individuelles et je peux maintenant facilement les copier/coller à un autre emplacement sur mon ordinateur.

Cette méthode est particulièrement utile pour extraire des données de fichiers PDF qui ont généralement des en-têtes de colonne clairement définis. Cela vous fera gagner beaucoup de temps si votre objectif est d'extraire automatiquement des données de plusieurs fichiers PDF à l'aide de macros Excel, car vous pouvez désormais utiliser le même modèle MS Word encore et encore pour créer rapidement plusieurs documents pour chaque fichier PDF. 3. Utilisez l'éditeur MS Excel VBA pour récupérer des données à l'aide de

Pour cette méthode, nous allons utiliser un outil appelé xvba qui peut être téléchargé ici et qui fonctionne comme une API (Application Program Interface). La bonne nouvelle est que vous n'avez pas du tout besoin d'écrire de code. La mauvaise nouvelle est que vous devez taper le code HTML de votre page Web cible, c'est-à-dire que je suggérerais de le faire en utilisant MS Word car cela vous obligera à vraiment décomposer votre page Web en ses composants (voir capture d'écran 1 ci-dessous).

Les nombres entre crochets sont des cellules individuelles sur une feuille de calcul où les en-têtes de colonne et de ligne ont été utilisés comme noms pour chaque champ de données. Ils agissent comme des variables, c'est-à-dire qu'ils sont traités comme du texte par Excel et changeront en fonction de la structure de votre feuille de calcul (par exemple, si vous sélectionnez une colonne différente pour filtrer les données).

Utiliser IMPORTXML dans les feuilles Google

Lorsque vous utilisez IMPORTXML pour extraire des données d'une page Web, la première étape consiste à ouvrir Google Sheets . La deuxième étape consiste à accéder à Outils> Éditeur de scripts. La troisième étape consiste à copier/coller le code HTML de votre site Web cible dans la zone de texte, comme indiqué dans la capture d'écran 7 ci-dessous :

Comme vous pouvez le voir sur la capture d'écran 8 ci-dessus, mes données ont été séparées avec succès en colonnes de texte individuelles et je peux maintenant facilement les copier/coller à un autre emplacement sur mon ordinateur. Nous avons utilisé cette méthode dans le passé pour récupérer des données Facebook et Twitter pour une campagne de marketing en ligne. C'est également un bon moyen d'extraire des données de sites Web qui utilisent AJAX lorsque vous ne souhaitez pas utiliser la commande GOTO.

Utiliser IMPORTHTML dans Google Sheets

Cette méthode est similaire à la méthode numéro 3, mais au lieu d'utiliser IMPORTXML , nous allons utiliser IMPORTHTML . La première étape consiste à ouvrir Google Sheets. La deuxième étape est d'aller dans Outils > Éditeur de script. La troisième étape consiste à copier/coller le code HTML de votre site Web cible dans la zone de texte.

Utilisation des extensions chromées

Vous pouvez récupérer des données Web à l'aide d'extensions Chrome telles que Data Scraper et Save To CSV. Puisqu'il existe une version gratuite et payante des extensions chrome (Data Scraper), je suggérerais d'avoir les deux pour voir laquelle fonctionne le mieux pour vous.

Conclusion

Grattez jusqu'à quelques centaines de pages (tout en vous assurant de laisser quelques secondes d'intervalle entre chaque exécution). Gratter un site Web une fois par mois fonctionnerait bien avec une solution de bricolage écrite en Python. Mais si vous recherchez une solution DaaS de niveau entreprise, notre équipe de PromptCloud fournit une solution de bout en bout où vous nous donnez l'exigence et nous vous remettons les données que vous pouvez ensuite brancher et jouer.

Infrastructure, gestion des proxy, s'assurer que vous n'êtes pas bloqué lors du grattage des données. Exécution du moteur de scraping à une fréquence régulière pour mettre à jour les données. Nous apportons également des modifications pour tenir compte des modifications apportées à l'interface utilisateur du site Web concerné. Tout est géré dans notre solution entièrement gérée . Il s'agit d'un service cloud payant à l'utilisation. Cela répondra à toutes vos exigences de grattage Web. Que vous soyez à la tête d'une startup, d'une multinationale ou que vous ayez besoin de données pour vos travaux de recherche. Nous avons des solutions de grattage de données pour tous.