Qu’est-ce que le web scraping?
Il est essentiel pour la collecte de grands ensembles de données, qui sont la pierre angulaire de l’analyse de big datas, de Machine Learning (ML) et des algorithmes de l’intelligence artificielle (AI).
Le point difficile est que l’information est le bien le plus précieux au monde (après le temps, car on ne peut pas racheter le temps), comme Michael Douglas l’a dit dans le célèbre film “Wall Street” bien avant l’ère de l’Internet.
Cela signifie que ceux qui possèdent l’information prennent toutes les précautions possibles pour la protéger contre la copie. A l’époque pré-Internet, c’était facile, car la législation sur le droit d’auteur est assez solide dans les pays développés. Le World Wide Web a tout changé, car n’importe qui peut copier le texte de la page et le coller sur une autre page, et scrapers sont simplement des algorithmes qui peuvent le faire beaucoup plus rapidement que les humains.
Il y a trois niveaux de complexité du scrapping du Web, selon la quantité de JavaScript (JS) que vous avez à traiter :
Vous êtes chanceux :
- Les pages Web que vous devez scrapper ont un balisage simple et propre sans JS. Dans ce cas, il suffit de créer les “localisateurs” pour les données en question. Les instructions XPath sont d’excellents exemples de tels localisateurs.
- Toutes les URLs vers d’autres sites Web et pages sont directes. Trouver seulement les URLs pertinentes est la principale difficulté ici. Par exemple, vous pouvez rechercher l’attribut `class’. Dans un tel cas, le XPath ressemblera à ceci : `///a[@class=’Votre_classe_cible’]“
Un professionnel compétent :
- Rendu JS partiel. Par exemple, la page de résultats de recherche contient toutes les informations, mais elle est générée par du JS. Typiquement, si vous ouvrez un résultat spécifique, les données complètes sans JS sont là.
- Pagination simple. Au lieu de cliquer constamment sur le bouton “page suivante”, vous pouvez recevoir des pages simplement en créant l’URL nécessaire comme ceci : http://votresite.com/data?page=2&limit10. De la même manière, vous pouvez, par exemple, augmenter le nombre de résultats d’une même requête.
- Règles simples de création d’URL. Les liens peuvent être formés par du JS, mais vous pouvez déchiffrer la règle et les recréer vous-même.
Chevalier Jedi, que la Force soit avec vous.
- La page est entièrement générée avec du JS. Il n’y a aucun moyen d’obtenir les données sans exécuter le JS. Dans ce cas, vous devriez utiliser des outils plus sophistiqués. Selenium ou d’autres outils basés sur WebKit feront le travail.
- Les URLs sont formées en utilisant le JS. Les outils du paragraphe précédent devraient également résoudre ce problème, mais il peut y avoir un ralentissement dans le traitement dû au fait que le rendu JS prend plus de temps. Peut-être devriez-vous envisager de diviser le scrappeur et le crawler et d’effectuer les opérations avec des process séparés.
- Un CAPTCHA est présent. Habituellement, le CAPTCHA n’apparaît pas immédiatement et nécessite plusieurs requêtes. Dans ce cas, vous pouvez utiliser différents services proxy et changer simplement d’adresse IP lorsque le scrappeur est bloqué par un CAPTCHA. En passant, ces services peuvent également être utiles pour émuler l’accès à partir de différents emplacements. Capmonster2 est par exemple un outil pour “casser” les captchas.
- Le site Web a une API sous-jacente avec des règles complexes de transfert de données. Les scripts JS rendent les pages après s’être référés au back-end. Il est possible qu’il soit plus facile de recevoir des données lorsqu’on effectue des requêtes directement dans le back-end. Pour analyser le fonctionnement des scripts, utilisez la console Developer Console dans votre navigateur. Appuyez sur F12 et allez dans l’onglet Réseau.
Ce qui suit est destiné aux chercheurs de Big Data qui se conforment aux autorisations des fichiers robots.txt, définissent l’agent utilisateur (User Agent) correct et ne violent pas les conditions d’utilisations des sites qu’ils scrappent.
EN SAVOIR PLUS DEPUIS UNE VIDÉO
Il y a trois niveaux de complexité du scrapping du Web, dépendant de la quantité de JavaScript (JS) que vous avez à traiter :
Il est également important de comprendre la différence entre le web scrapping et l’exploration de données (Data Mining). En bref, alors que le scrap des données peut se produire dans n’importe quel tableau de données et peut se faire manuellement, le web scrapping ou le crawling n’a lieu que sur les pages Web et est effectué par des robots spéciaux : des robots scrappeurs. Il existe plusieurs facteurs de succès et de réussite pour le Big Data Mining. Savoir où trouver les sources de données correctes et pertinentes est la base la plus importante pour une analyse réussie.
Par exemple, un fabricant peut vouloir surveiller les tendances du marché et découvrir les comportements réels des clients, sans se fier aux rapports mensuels du distributeur ou du vendeur. En utilisant le web scraping, l’entreprise peut collecter un énorme ensemble de données sur les descriptions de produits sur les sites des détaillants, les commentaires des clients et les commentaires sur les sites Web des distributeurs tels que Amazon. L’analyse de ces données peut aider le fabricant à fournir aux détaillants de meilleures descriptions de leurs produits, ainsi qu’à dresser la liste des problèmes auxquels les utilisateurs finaux sont confrontés avec leur produit et à appliquer leurs commentaires pour améliorer davantage leur produit et sécuriser leurs résultats nets grâce à des ventes plus importantes.
La plupart des scrapers sont écrits en Python pour faciliter le processus de traitement ultérieur des données collectées. De nombreux scrappeurs sont écrits en utilisant des frameworks et des bibliothèques pour le web crawling, comme Scrapy, Ghost, lxml, aiohttp ou Selenium.
Lorsque vous voulez développer un scrappeur, vous devez être prêts à faire face à n’importe quel niveau de complexité. C’est pourquoi vous devez valider les ensembles de données que vous voulez récupérer avant de développer votre scrappeur afin d’allouer des ressources suffisantes. En outre, les conditions peuvent changer (et c’est souvent le cas) au cours du développement des scrappeurs, de sorte qu’un spécialiste des données compétent doit être prêt intervenir pour vous permettre de récupérer des données fiables.