Fermer

février 26, 2023

Scraping Web sophistiqué avec des données lumineuses –

Scraping Web sophistiqué avec des données lumineuses –


Il est facile de faire des demandes de données structurées servies par les API REST ou GraphQL. Récupérer des données arbitraires de n’importe quelle page Web est plus une corvée, mais cela ouvre de nouvelles opportunités. Bright Data fournit des services pour rendre le grattage plus facile, fiable et pratique.

Nous avons créé cet article en partenariat avec Données lumineuses. Merci de soutenir les partenaires qui rendent SitePoint possible.

Le grattage des données est un super pouvoir de développeur Web qui vous place au-dessus des capacités des utilisateurs Web ordinaires. Vous voulez trouver le vol le moins cher, la chambre d’hôtel la moins chère ou la dernière console de jeux nouvelle génération ? Les utilisateurs mortels doivent rechercher manuellement à intervalles réguliers, et ils ont besoin d’une bonne dose de chance pour faire une bonne affaire. Mais le web scraping vous permet d’automatiser le processus. Un bot peut récupérer des données toutes les quelques secondes, vous alerter lorsque des seuils sont dépassés et même acheter automatiquement un produit en votre nom.

Pour un exemple rapide, ce qui suit bash la commande utilise Boucle pour récupérer le contenu HTML renvoyé par la page d’index du blog SitePoint. Il canalise le résultat à travers Grép pour renvoyer les liens vers les articles les plus récents :

curl 'https://www.sitepoint.com/blog/' | \
  grep -o '<article[^>]*>\s*<a href="https://www.sitepoint.com/bright-data-web-scraping/[^"]*"'

Un programme peut exécuter un processus similaire tous les jours, comparer avec les résultats précédents et vous alerter lorsque SitePoint publie un nouvel article.

Avant de vous lancer et d’essayer de récupérer le contenu de tous vos sites préférés, essayez d’utiliser curl avec une recherche Google ou un lien Amazon. Il y a de fortes chances que vous receviez un HTTP 503 Service Unavailable avec une courte réponse d’erreur HTML. Les sites placent souvent des barrières pour empêcher le grattage, telles que :

  • vérification de l’agent utilisateur, des cookies et d’autres en-têtes HTTP pour s’assurer qu’une requête provient du navigateur d’un utilisateur et non d’un bot
  • générer du contenu à l’aide de requêtes Ajax alimentées par JavaScript afin que le HTML ait peu d’informations
  • obligeant l’utilisateur à interagir avec la page avant d’afficher le contenu – comme le défilement vers le bas
  • obliger un utilisateur à se connecter avant d’afficher du contenu – comme la plupart des sites de médias sociaux

Vous pouvez résoudre la plupart des problèmes à l’aide d’un navigateur sans tête – une véritable installation de navigateur que vous contrôlez à l’aide d’un pilote pour émuler les interactions de l’utilisateur telles que l’ouverture d’un onglet, le chargement d’une page, le défilement vers le bas, le clic sur un bouton, etc.

Votre code deviendra plus complexe, mais ce n’est pas la fin de vos problèmes. Quelques sites :

  • ne sont disponibles que sur certaines connexions, comme un réseau mobile
  • limiter le contenu à des pays spécifiques en vérifiant l’adresse IP du demandeur (par exemple, bbc.co.uk est disponible pour les visiteurs britanniques mais redirigera ceux d’autres pays vers bbc.com qui a moins de contenu et de publicités)
  • bloquer les demandes répétées de la même adresse IP
  • utiliser des CAPTCHA ou des techniques similaires pour identifier les bots
  • utiliser des services tels que Nuageuxce qui peut empêcher les bots détectés sur un site d’en infiltrer un autre

Vous aurez maintenant besoin de serveurs proxy pour les pays et les réseaux appropriés, idéalement avec un pool d’adresses IP pour échapper à la détection. On est loin de la simplicité de curl combiné avec une expression régulière ou deux.

Heureusement, Données lumineuses fournit une solution à ces problèmes techniques et promet de « convertir les sites Web en données structurées ». Bright Data offre des options de grattage fiables sur des connexions réseau robustes, que vous pouvez configurer en quelques minutes.

Ensembles de données Bright Data sans code

Jeux de données Bright Data sont le moyen le plus simple de commencer si vous avez besoin de données de :

  • plateformes de commerce électronique telles que Walmart et divers sites Amazon (.com, .de, .es, .fr, .it, .in ou .co.uk)
  • plateformes de médias sociaux, notamment Instagram, LinkedIn, Twitter et TikTok
  • des sites commerciaux tels que LinkedIn, Crunchbase, Stack Overflow, Indeed et Glassdoor
  • des annuaires tels que Google Maps Business
  • d’autres sites comme IMDB

Les utilisations typiques d’un jeu de données sont :

  • suivi des prix des concurrents
  • suivi de vos produits les plus vendus
  • opportunités d’investissement
  • veille concurrentielle
  • analyser les retours clients
  • protéger vos marques

Dans la plupart des cas, vous souhaiterez importer les données dans des bases de données ou des feuilles de calcul pour effectuer votre propre analyse.

Les ensembles de données sont tarifés en fonction de la complexité, de l’analyse et du nombre d’enregistrements. Un site comme Amazon.com fournit des millions de produits, donc saisir tous les enregistrements coûte cher. Cependant, il est peu probable que vous ayez besoin de tout. Vous pouvez filtrer les ensembles de données à l’aide de sous-ensembles personnalisés pour renvoyer les enregistrements qui vous intéressent. L’exemple suivant recherche les titres de livres SitePoint à l’aide de la chaîne Novice to Ninja. Cela renvoie beaucoup moins d’enregistrements, il est donc disponible pour quelques centimes.

sous-ensemble personnalisé de l'ensemble de données

Vous pouvez recevoir les données résultantes par e-mail, webhook, Amazon S3, Google Cloud Storage, Microsoft Azure Storage et SFTP de manière ponctuelle ou ponctuelle.

Ensembles de données personnalisés et Web Scraper IDE

Vous pouvez extraire des données personnalisées de n’importe quel site Web à l’aide d’un collectionneur — un programme JavaScript qui contrôle un navigateur Web sur le réseau de Bright Data.

La démonstration ci-dessous illustre comment rechercher sur Twitter le #sitepoint hashtag et renvoie une liste de tweets et de métadonnées au format JSON. Ce collecteur sera démarré à l’aide d’un appel API, vous devez donc d’abord vous diriger vers votre paramètres du compte et créez un nouveau jeton d’API.

créer un jeton d'API

Bright Data vous enverra un e-mail avec un numéro de confirmation. Entrez-le dans le panneau et vous verrez votre jeton (un GUID hexadécimal de 36 caractères). Copiez-le et assurez-vous de l’avoir stocké en toute sécurité : vous ne le reverrez plus et devrez générer un nouveau jeton si vous le perdez.

Dirigez-vous vers le Panneau des collectionneurs dans le Plateforme de collecte de données menu et choisissez un modèle. Nous utilisons Twitter dans cet exemple, mais vous pouvez sélectionner celui dont vous avez besoin ou créer un collecteur personnalisé à partir de rien :

Collecteur de données lumineux

Cela conduit à la Web Scraper IDE où vous pouvez afficher et modifier le code JavaScript du collecteur. Bright Data fournit des commandes API telles que :

  • country(code) utiliser un appareil dans un pays spécifique
  • emulate_device(device) pour émuler un téléphone ou une tablette spécifique
  • navigate(url) pour ouvrir une URL dans le navigateur sans tête
  • wait_network_idle() attendre que les demandes en suspens soient terminées
  • wait_page_idle() attendre qu’aucune autre demande DOM ne soit faite
  • click(selector) cliquer sur un élément spécifique
  • type(selector, text) saisir du texte dans un champ de saisie
  • scroll_to(selector) pour faire défiler jusqu’à un élément afin qu’il soit visible
  • solve_captcha() pour résoudre tous les CAPTCHA affichés
  • parse() pour analyser les données de la page
  • collect() pour ajouter des données à l’ensemble de données

Un panneau d’aide est disponible, bien que le code vous soit familier si vous avez programmé un navigateur sans tête ou écrit des tests d’intégration.

Dans ce cas, le code du modèle Twitter n’a pas besoin d’être modifié davantage.

Éditeur de code Bright Data

Faites défiler vers le bas et cliquez sur le Saisir panneau pour supprimer des exemples de hashtags et définir les vôtres (tels que #SitePoint). Cliquez maintenant sur le Aperçu bouton pour regarder le code s’exécuter dans un navigateur. Il faudra une minute ou deux pour charger complètement Twitter et faire défiler la page pour afficher une sélection de résultats.

Aperçu du collecteur de données Bright

Le Sortir panneau affiche les résultats capturés et formatés une fois l’exécution terminée. Vous pouvez télécharger les données et examiner le journal d’exécution, la console du navigateur, les requêtes réseau et les erreurs.

Sortie de données lumineuse

Retour à la Panneau des collectionneurs en utilisant le menu ou la flèche de retour en haut. Votre nouveau collecteur est affiché.

Intégration lumineuse des données

Clique le Intégration à votre système et choisissez ces options :

  • le Temps réel (requête unique) fréquence de collecte
  • JSON comme forme
  • Téléchargement de l’API comme la livraison

Paramètres de l'API Bright Data JSON

Cliquez sur Mise à jour pour enregistrer les paramètres d’intégration et revenir au panneau Collecteurs.

Maintenant, cliquez sur le menu à trois points à côté du collecteur et choisissez Initié par API.

Lancement de l'API Bright Data

Le panneau Lancer par API affiche deux curl demander des commandes.

Exemple de boucle Bright Data

La première commande exécute le collecteur de hashtag Twitter. Il nécessite le jeton API que vous avez créé ci-dessus. Ajoutez-le à la fin du Authorization: Bearer entête. Par exemple:

curl \
  -H "Authorization: Bearer 12345678-9abc-def0-1234-56789abcdef0" \
  -H "Content-Type: application/json" \
  -d '{"Hashtag - #":"#SitePoint"}' \
  "https://api.brightdata.com/dca/trigger_immediate?collector=abc123"

Il renvoie une réponse JSON avec un travail response_id:

{
  "response_id": "c3910b166f387775934ceb4e8lbh6cc",
  "how_to_use": "https://brightdata.com/api/data-collector#real_time_collection"
}

Vous devez réussir le travail response_id à la seconde curl commande sur l’URL (ainsi que votre jeton d’API dans l’en-tête d’autorisation) :

curl \
  -H "Authorization: Bearer 12345678-9abc-def0-1234-56789abcdef0" \
  "https://api.brightdata.com/dca/get_result?response_id=c3910b166f387775934ceb4e8lbh6cc"

L’API renvoie un en attente message pendant l’exécution du collecteur :

{
  "pending": true,
  "message": "Request is pending"
}

Il renverra éventuellement un résultat JSON contenant des données de tweet lorsque le collecteur aura fini de s’exécuter. Vous pouvez importer ces informations dans vos propres systèmes si nécessaire :

[
  {
    "post": "https://twitter.com/UserOne/status/111111111111",
    "date": "2022-10-17T19:09:00.000Z",
    "Author": "UserOne",
    "post body": "Tweet one content",
    "likes": 0,
    "comments": 0,
    "Shares": 0,
    "input": {
      "Hashtag - #": "#SitePoint"
    }
  },
  {
    "post": "https://twitter.com/UserTwo/status/2222222222222",
    "date": "2022-10-08T13:28:16.000Z",
    "Author": "UserTwo",
    "post body": "Tweet two content",
    "likes": 0,
    "comments": 0,
    "Shares": 0,
    "input": {
      "Hashtag - #": "#SitePoint"
    }
  },...
]

Le résultat est également disponible à partir des panneaux Bright Data.

Résultat de données lumineux

Proxies de données lumineux

Vous pouvez tirer parti du réseau proxy de Bright Data si vos besoins vont au-delà du grattage de sites Web. Exemples de cas d’utilisation :

  • vous avez une application Android que vous souhaitez tester sur un réseau mobile en Inde
  • vous avez une application serveur qui doit télécharger des données comme s’il s’agissait d’un utilisateur dans un ou plusieurs pays en dehors de l’emplacement réel du serveur

Une gamme de procurations est disponible, y compris celles-ci :

  • Mandataires résidentiels: un ensemble tournant d’adresses IP sur de vrais appareils installés dans des résidences
  • Proxy FAI: adresses IP résidentielles haut débit statiques et tournantes dans les centres de données haut débit
  • Proxy de centre de données: IP datacenter statiques et tournantes
  • Proxy mobiles: rotation des IP sur de vrais appareils mobiles 3G, 4G et 5G
  • Proxy de déverrouillage Web: un système de déverrouillage automatisé utilisant le réseau résidentiel, qui inclut la résolution CAPTCHA
  • Proxy d’API SERP: une option pour collecter des données à partir des résultats des moteurs de recherche

Chacun offre des options telles que la relance automatique, la limitation des demandes, la rotation IP, le blocage IP, la réduction de la bande passante, la journalisation, les mesures de réussite et le contournement du proxy. Les prix varient de 0,60 $ à 40 $ par Go selon le réseau.

La façon la plus simple de commencer est d’utiliser l’extension de navigateur pour Chrome ou Firefox. Vous pouvez configurer l’extension pour utiliser n’importe quel réseau proxy spécifique, elle est donc idéale pour tester des sites Web dans des emplacements spécifiques.

Extension de proxy de données lumineuses

Pour une utilisation plus avancée, vous avez besoin du Gestionnaire de proxy. Il s’agit d’un proxy installé sur votre appareil qui agit comme intermédiaire entre votre application et le réseau Bright Data. Il utilise des options de ligne de commande pour contrôler dynamiquement la configuration avant de vous authentifier et de se connecter à un véritable proxy.

Des versions sont disponibles pour Linux, macOS, Windows, Dockeret en tant que Node.js package npm. Le code source est disponible sur Github. Exemples de scripts sur le site Bright Data illustrent comment vous pouvez utiliser le proxy dans des scripts shell (curl), Node.js, Java, C#, Visual Basic, PHP, Python, Ruby, Perl et autres.

L’utilisation d’un proxy peut devenir compliquée, c’est pourquoi Bright Data vous suggère de contacter votre responsable de compte pour discuter des exigences.

Conclusion

Le grattage des données est devenu de plus en plus difficile au fil des ans, car les sites Web tentent de contrecarrer les robots, les pirates et les voleurs de contenu. La complexité supplémentaire du contenu spécifique à l’emplacement, à l’appareil et au réseau rend la tâche plus difficile.

Données lumineuses offre une voie rentable pour résoudre le grattage. Vous pouvez obtenir des données utiles immédiatement et adopter d’autres services au fur et à mesure que vos besoins évoluent. Le réseau Bright Data est fiable, flexible et efficace, vous ne payez donc que pour les données que vous avez extraites avec succès.






Source link