Programme Python pour Extraire le Contenu d’un Site Web

Un programme Python de web scraping télécharge le HTML et extrait les éléments sélectionnés. BeautifulSoup transforme le balisage en un arbre de balises, d’attributs, de texte et de liens interrogeable. Le flux de travail est : requête, validation, analyse, sélection et sauvegarde. Dans web.run, Python s’exécute via Pyodide, de sorte que l’activité réseau et les paquets chargés apparaissent également dans Run Details.

Programme Python pour Extraire le HTML d’un Site

Sortie :

La sortie apparaîtra ici...

Sortie :

Title: Header
Links found: 9

Comment Fonctionne Cet Exemple

  1. pyfetch envoie une requête asynchrone, le programme utilise donc await au niveau supérieur.
  2. La vérification du statut empêche les pages d’erreur d’être analysées comme le document cible.
  3. response.string() lit le corps de la réponse, que BeautifulSoup analyse avec html.parser.
  4. find("h1") renvoie le premier titre, tandis que find_all("a") renvoie tous les liens.

Inspecter le Scraper avec Run Details

Ouvrez Run Details après la fin du programme. Il sépare la requête de page effectuée par le scraper de l’activité des paquets nécessaire à l’exécution du code.

Signal Run DetailsSignification
Requests affiche un GET vers raw.githubusercontent.comLe scraper a tenté de télécharger le fichier HTML
Le statut de la requête est 200Le navigateur a reçu la page avec succès
La requête a échoué ou est bloquéeVérifier la connectivité et si la cible autorise les requêtes cross-origin depuis le navigateur
Packages liste beautifulsoup4web.run a détecté l’import bs4 et chargé le paquet compatible
Statut 200 mais valeurs extraites manquantesLe réseau fonctionne ; inspecter le HTML et les sélecteurs

La durée à côté de la requête mesure le téléchargement de la page ; la durée totale inclut également le chargement du paquet, l’analyse et l’exécution Python. BeautifulSoup est normalement téléchargé lors de la première exécution et reste disponible dans l’environnement d’exécution actuel, de sorte que les exécutions ultérieures peuvent être plus rapides et ne pas afficher d’activité de paquet.

Comment Faire du Web Scraping avec Python

  1. Choisissez une page qui autorise l’accès automatisé et les requêtes depuis le navigateur.
  2. Téléchargez le HTML et rejetez les statuts HTTP non réussis avant l’analyse.
  3. Créez un seul objet BeautifulSoup à partir du corps de la réponse.
  4. Inspectez le balisage et sélectionnez les éléments par balise sémantique, attribut ou sélecteur CSS.
  5. Normalisez le texte extrait et résolvez les URL relatives avant de sauvegarder les résultats.

Autres Exemples Python BeautifulSoup

Extraire tous les titres de section

Utilisez un sélecteur CSS pour collecter plusieurs niveaux de titres :

for heading in soup.select("h2, h3"):
    print(heading.get_text(" ", strip=True))

Le séparateur maintient le texte des balises imbriquées séparé, tandis que strip=True supprime les espaces blancs environnants.

Extraire et normaliser les liens

Résoudre les liens absolus, relatifs et de fragment par rapport à l’URL de la page :

from urllib.parse import urljoin

for link in soup.select("a[href]"):
    print(urljoin(url, link["href"]))

Le sélecteur [href] exclut les ancres sans destination, rendant l’accès à l’attribut sûr.

Choisir les Sélecteurs BeautifulSoup

TâcheSélecteurRésultat
Premier titre de pagesoup.find("h1")Une balise ou None
Tous les lienssoup.find_all("a")Une liste de balises
Liens avec destinationsoup.select("a[href]")Balises correspondant à un sélecteur CSS
Éléments dans un articlesoup.select("article .item")Seulement les descendants correspondants

Utilisez find quand un seul élément est attendu, find_all pour une collection basée sur les balises et select quand les relations ou attributs rendent un sélecteur CSS plus clair.

Pièges du Web Scraping en Python

  1. Toutes les URL ne sont pas accessibles. Pyodide s’exécute dans le navigateur, donc une page peut s’ouvrir dans un onglet mais rejeter une requête cross-origin depuis web.run.
  2. Les éléments manquants nécessitent une vérification explicite. BeautifulSoup renvoie None quand un sélecteur ne correspond à rien ; accéder immédiatement à son texte lèverait une erreur.
  3. Le contenu généré par JavaScript est absent du HTML téléchargé. BeautifulSoup analyse la réponse du serveur mais n’exécute pas les scripts ; inspectez le corps de la réponse quand un sélecteur ne retourne aucun résultat.

Respectez les règles d’exploration, limitez la fréquence des requêtes, mettez en cache les pages inchangées et réduisez la charge quand le serveur signale trop de requêtes.

Pour le flux de contrôle environnant, voir gestion des exceptions Python et vérifications conditionnelles Python.

FAQ

Quelle bibliothèque Python est utilisée pour le web scraping ?

BeautifulSoup analyse et interroge le HTML téléchargé. Un client réseau comme pyfetch récupère le document, tandis que BeautifulSoup sélectionne les éléments par balise, attribut ou sélecteur CSS.

BeautifulSoup peut-il scraper des sites web JavaScript ?

BeautifulSoup analyse le HTML fourni par le serveur mais n’exécute pas JavaScript. Les éléments créés uniquement après l’exécution des scripts n’apparaîtront pas dans le document analysé.