CodeGym /Cours /Python SELF FR /Travailler avec le contenu JavaScript

Travailler avec le contenu JavaScript

Python SELF FR
Niveau 33 , Leçon 1
Disponible

1. Introduction aux pages dynamiques

Si tu as déjà essayé de scraper des données depuis des sites qui mettent à jour le contenu en direct grâce à JavaScript, tu sais que cela peut devenir un vrai casse-tête. Mais ne te stresse pas ! Comme on dit, n’importe quel code compliqué peut être configuré pour ressembler à de la magie. Voyons comment requests_html nous permet de traiter ce type de contenu.

Comme tu le sais, toutes les pages web ne sont pas également utiles. Certaines chargent immédiatement leur contenu alors que d’autres peuvent le générer ou le mettre à jour dynamiquement avec JavaScript. Cela pose des défis pour ceux qui veulent extraire les données, car l’HTML que tu vois via les outils développeurs peut différer de celui que tu obtiens avec une requête standard.

Problèmes rencontrés lors du scraping de contenu dynamique

La plupart des bibliothèques web comme requests travaillent uniquement avec les réponses serveur et ne peuvent pas exécuter JavaScript. Cela signifie que si le contenu est chargé ou modifié via JavaScript, tu pourrais ne pas le voir du tout avec une requête classique.

2. Utilisation de la bibliothèque requests_html

C’est là que requests_html intervient — une bibliothèque qui combine la simplicité de requests et la puissance d'un navigateur pour exécuter JavaScript. Elle te fournit un moteur de rendu basique qui te permet d’interagir avec des pages web dynamiques comme si tu utilisais un vrai navigateur.

Installation et configuration de la bibliothèque

Pour démarrer, installons requests_html. Ouvre ton terminal préféré et exécute la commande suivante :

Bash
pip install requests-html

Magnifique, la bibliothèque est installée ! On peut maintenant commencer à travailler avec.

Les bases de l'utilisation de requests_html pour extraire du contenu JavaScript

requests_html rend notre vie plus facile. Voyons comment cela fonctionne en pratique. Supposons que nous avons une page qui génère certaines données via JavaScript.

Python

from requests_html import HTMLSession

# Créer une session HTML
session = HTMLSession()

# Envoyer une requête à une page web
response = session.get('https://example-dynamic-page.com')

# Rendre le JavaScript
response.html.render()

# Extraire les données
data = response.html.find('#dynamic-content', first=True)
print(data.text)

C’est magique ! Contrairement à requests, requests_html nous fournit une méthode .render(), qui permet de "charger" la page et d’exécuter le JavaScript. Une fois que la page est "vivante", tu peux extraire toutes les données dont tu as besoin en utilisant les sélecteurs que nous avons étudiés avant.

3. Exemples d’extraction de données

Maintenant, approfondissons et examinons quelques exemples pour que tu voies comment requests_html nous sauve dans divers scénarios.

Extractions pratiques de données depuis des pages dynamiques

Imagine une page qui charge les dernières nouvelles seulement après un scroll. Avec requests_html, on peut simuler le comportement utilisateur.

Python

url = 'https://example-news-site.com'

# Charger la page
response = session.get(url)

# Rendu avec un timeout allongé si besoin
response.html.render(timeout=20)

# Trouver les éléments des actualités
news_items = response.html.find('.news-item')

for item in news_items:
print(item.text)

Voilà, on accède facilement au contenu qui semblait insaisissable avant !

Manipuler le contenu JavaScript chargé avec requests_html

Avec requests_html et les sélecteurs CSS que nous avons vus dans les cours précédents, tu peux travailler avec le contenu des pages web comme si tu faisais du scraping depuis des années !

Python

# Sélectionner le premier élément de l’en-tête de news
headline = response.html.find('.news-headline', first=True)
print(headline.text)

# Extraire un lien depuis un élément
link = headline.find('a', first=True).attrs['href']
print(link)

4. Conseils pratiques et astuces

Bien que requests_html soit un outil puissant, il y a quelques points à garder en tête lors de son utilisation :

  • Timeouts et délais : N’oublie pas de configurer les timeouts de rendu pour les pages complexes. Cela te permettra d’éviter des erreurs dues à des chargements lents.
  • Capacités de rendu : requests_html peut consommer beaucoup de ressources, car il rend le JavaScript. Pour de gros volumes de données ou des pages complexes, cela peut ralentir le processus.
  • CAPTCHA et protections anti-bot : requests_html ne contourne pas les protections anti-bot ou CAPTCHA, donc pour des cas plus complexes, mieux vaut utiliser Selenium.
1
Mission
Python SELF FR, niveau 33, leçon 1
Bloqué
Installation et utilisation de requests_html
Installation et utilisation de requests_html
2
Mission
Python SELF FR, niveau 33, leçon 1
Bloqué
Extraction de données à partir d'une page dynamique
Extraction de données à partir d'une page dynamique
4
Mission
Python SELF FR, niveau 33, leçon 1
Bloqué
Erreurs et optimisation du rendu
Erreurs et optimisation du rendu
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION