Comment gratter un site web JavaScript en utilisant Python

Comment faire, Python, Scraping, Mar-06-20245 minutes de lecture

Les navigateurs web utilisent Javascript pour créer une expérience dynamique et interactive pour l'utilisateur. La majorité des applications et des fonctions qui rendent l'internet indispensable à la vie moderne sont codées sous la forme de Javascript. Si l'on considère les premières incarnations de Javascript, les pages web étaient statiques et offraient peu d'interaction à l'utilisateur, si ce n'est de cliquer sur des liens

Table des matières

Les navigateurs web utilisent Javascript pour créer une expérience dynamique et interactive pour l'utilisateur. La majorité des applications et des fonctions qui rendent l'internet indispensable à la vie moderne sont codées sous la forme de Javascript. Si l'on considère les premières incarnations de Javascript, les pages web étaient statiques et offraient peu d'interaction à l'utilisateur au-delà du fait de cliquer sur des liens et de charger de nouvelles pages. 

Voici quelques-unes des améliorations dynamiques apportées à un site web par Javascript.

  • Validation des entrées dans les formulaires web
  • Animation d'éléments de page tels que le redimensionnement, la relocalisation et l'estompage
  • Chargement de nouvelles données sans recharger la page
  • Lecture de fichiers audio et vidéo
  • Réparation des problèmes de compatibilité des navigateurs

Vous pouvez utiliser le scraping pour collecter des données structurées à partir de sites web de manière automatisée. Le web scraping est également connu sous le nom d'extraction de données web. Voici quelques-uns des principaux cas d'utilisation du scraping web :

  • Suivi de l'actualité
  • Renseignements sur les prix
  • Génération de leads
  • Surveillance des prix
  • Étude de marché

Comprenons d'abord pourquoi il est nécessaire de récupérer des sites web.

Pourquoi faut-il scraper un site web en Javascript ?

Les entreprises utilisent le web scraping pour exploiter la grande quantité de données accessibles au public afin de prendre des décisions plus judicieuses. Voici quelques-uns des domaines dans lesquels le web scraping est utilisé.

  • Commerce électronique
  • Médias sociaux
  • Banque 
  • Finances
  • Marketing 
  • Immobilier
  • Finances
  • Optimisation des moteurs de recherche
  • Les pistes de vente

Voici les raisons pour lesquelles les entreprises ont besoin de scanner les sites web.

Automatisation - Il n'est pas possible de copier et de coller chaque information d'un site web. Les entreprises utilisent des logiciels de scraping pour automatiser la plupart de leurs processus associés.

Gestion des données - Il n'est pas possible d'utiliser des bases de données et des feuilles de calcul pour gérer des chiffres et des nombres sur un site web configuré en HTML. Les entreprises utilisent donc des outils de web scraping pour gérer leurs données.

Inscriptions immobilières - Les agents immobiliers utilisent le web scraping pour alimenter leur base de données de biens immobiliers disponibles à la location ou à la vente. 

Données comparatives des sites d'achat - Les entreprises utilisent le web scraping pour récupérer les données relatives aux prix et aux produits de chaque détaillant, afin de fournir à leurs utilisateurs les données comparatives qu'ils souhaitent. 

Statistiques et informations sectorielles - Les entreprises utilisent le scraping pour constituer d'énormes bases de données et en tirer des informations sectorielles. Par exemple, une entreprise peut récupérer et analyser des tonnes de données sur les prix du pétrole. Elle peut ensuite vendre ces informations aux compagnies pétrolières du monde entier.

Scraping d'un site web Javascript en utilisant Python

Voyons comment vous pouvez utiliser Selenium pour récupérer des sites web Javascript.

Installation de la bibliothèque Selenium

Vous pouvez installer Selenium à l'aide de la commande suivante.

pip install selenium

Installation du pilote Web

Savez-vous que Selenium simule un véritable navigateur ? Il n'utilise pas votre installation Chrome, mais un pilote pour faire fonctionner un navigateur. Les pilotes web Selenium se réfèrent à la fois aux liaisons de langage et aux implémentations du code de contrôle du navigateur individuel. Vous devez télécharger le pilote web, et vous pouvez l'ajouter à la variable d'environnement path. Nous utiliserons le pilote web Firefox et vous pouvez l'installer en suivant ce lien.

Exemple

Considérons un exemple simple de selenium qui implique la collecte d'un titre de site web. Pour cela, nous allons d'abord importer webdriver de selenium dans un fichier python comme indiqué ci-dessous :

from selenium import webdriver

Nous devons mentionner le chemin où se trouve le pilote web. Ensuite, nous devons initialiser le pilote web de Firefox.

WEBDRIVER_PATH = './'
driver = webdriver.Firefox(WEBDRIVER_PATH)

Nous définissons maintenant l'URL pour obtenir le titre du site web.

URL = 'https://www.google.com'
driver.get(URL)
print (driver.title)

L'exécution du code ci-dessus ouvre une fenêtre Firefox qui imprime dans la console le titre du site web. Nous avons défini l'URL de Google comme exemple dans ce cas, le résultat sera donc le suivant :

Il s'agit de la page google du pilote web firefox. Le titre imprimé sur la console sera le suivant :

Nous devons fermer manuellement la fenêtre firefox qui a été ouverte. Nous ajouterons driver.quit() à la fin de notre code pour que la fenêtre soit automatiquement fermée une fois le travail terminé. 

from selenium import webdriver 

WEBDRIVER_PATH = './'
driver = webdriver.Firefox(WEBDRIVER_PATH) 

URL = 'https://www.google.com'
driver.get(URL)
print (driver.title)
driver.quit()

Si vous souhaitez collecter des données à partir d'un site web dynamique, vous pouvez suivre les mêmes étapes que celles mentionnées ci-dessus. Par exemple, si vous voulez récupérer le titre de Youtube, vous pouvez utiliser le code ci-dessous.

from selenium import webdriver 
 
WEBDRIVER_PATH = './' 
driver = webdriver.Firefox(WEBDRIVER_PATH) 
URL = 'https://www.youtube.com'
driver.get(URL)
print (driver.title)
driver.quit()

Essayons quelque chose de nouveau. Nous pouvons éditer la boîte de recherche et la remplir avec le mot "Selenium" en utilisant la classe "Keys" comme indiqué ci-dessous.

from selenium.webdriver.common.keys import Keys

Après avoir initialisé le pilote web firefox et récupéré le titre de Youtube, nous créons un objet qui contient la boîte de recherche avec xpath.

search_box = driver.find_element_by_xpath('//input[@id="search"]')

Nous modifions ensuite le contenu de la boîte de recherche et y ajoutons le mot "Selenium".

search_box.send_keys('Selenium')

Une fois que nous avons rempli le champ de recherche avec le contenu souhaité, nous pouvons appuyer sur "Entrée" pour activer la recherche.

boîte_de_recherche.send_keys(Clés.ENTER)

Vous pouvez voir dans l'image ci-dessous que la boîte de recherche Youtube contient le mot "Selenium".

Utilisation d'un proxy

Le site proxys est nécessaire lorsque vous avez besoin d'un contenu web localisé. Ils sont également nécessaires lorsque vous envoyez trop de requêtes à un site web dans un court laps de temps. Vous avez besoin de proxys pour Selenium lorsque des tests automatisés sont nécessaires. Cependant, afin d'utiliser un proxy Selenium pour gratter un site web Javascript, vous devez utiliser un fil Selenium qui étend les bindings Selenium et donne accès aux requêtes sous-jacentes faites par le navigateur.

Pour utiliser Selenium avec un proxy, le paquet suivant doit être installé.

from selenium wire import webdriver

Après avoir installé la bibliothèque Python selenium-wire, vous devez mentionner ce qui suit :

  • nom_du_proxy
  • mot_de_passe
  • proxy_url
  • port_proxy

Ici, nous avons mentionné un numéro de port aléatoire 8080 à titre d'exemple. Vous pouvez définir le nom d'utilisateur, le mot de passe et l'URL du site web de votre choix.

proxy_username = "USER_NAME"
proxy_password = "PASSWORD"
proxy_url = "Any Website URL"
proxy_port = 8080

options = {
    "proxy": {
        "http": f"http://{proxy_username}:{proxy_password}@{proxy_url}:{proxy_port}",
        "verify_ssl": False,
    },
}

Pour le pilote web Selenium, les proxys résidentiels sont le meilleur choix. En effet, ils ne sont pas facilement détectés, contrairement aux centres de données proxys. Ils acheminent les requêtes des clients via des IP résidentielles et gagnent plus de confiance que les IP des centres de données. Ils sont également utiles pour accéder à des sites web complexes qui utilisent le Javascript comme Youtube, Google, Instagram, etc.

Pourquoi utiliser proxys pour scraper un site web JS ?

L'utilisation de proxys pour le scraping d'un site web est nécessaire pour les raisons suivantes :

  • proxys sont utilisés pour améliorer la sécurité et équilibrer le trafic internet d'un site web.
  • Les "web scrapers" doivent utiliser proxys pour dissimuler leur identité et faire en sorte que leur trafic ressemble à celui d'un utilisateur normal.
  • Le site proxys est également utilisé pour protéger les données personnelles des internautes.
  • proxys aider à accéder aux sites web qui sont bloqués par le mécanisme de censure du pays.
  • Vous pouvez explorer les sites web en utilisant proxys de manière fiable. 
  • proxys sont très utiles lorsqu'il s'agit de récupérer des données sur des produits auprès de détaillants en ligne. En effet, ils vous permettent de faire votre demande à partir d'une région géographique particulière et d'accéder au contenu spécifique que le site web affiche pour cette région.
  • proxys vous aider à effectuer un grand nombre de requêtes vers le site web cible sans vous faire bannir.
  • Vous pouvez utiliser proxys pour établir un nombre illimité de connexions simultanées à un même site web ou à des sites différents.

Conclusion

Le web scraping est important car vous pouvez l'utiliser pour :

  • Scraping d'annonces de produits/services et analyse de leurs budgets
  • Prévoir les tendances de la mode pour rester compétitif
  • Scraping des canaux de médias sociaux et découverte de clients potentiels, etc.

Plus loin, nous avons expliqué comment utiliser Selenium pour récupérer des sites web en Javascript en Python. Vous pouvez récupérer le contenu de sites web statiques ainsi que de sites web dynamiques comme Youtube. Vous devez également utiliser Selenium proxys pour les tests automatisés. Les meilleurs proxys que vous pouvez utiliser sont lesproxys résidentiels car ils sont super rapides et ne peuvent pas être facilement détectés contrairement à d'autres proxys.

J'espère que vous avez compris comment scraper un site web Javascript en utilisant Python.