Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Travailler Avec des Éléments Spécifiques | Décoder HTML avec Beautiful Soup
Extraction de Données Web avec Python
course content

Contenu du cours

Extraction de Données Web avec Python

Extraction de Données Web avec Python

1. Se Familiariser avec HTML
2. Décoder HTML avec Beautiful Soup
3. Travailler avec les Attributs d'Élément dans Beautiful Soup

book
Travailler Avec des Éléments Spécifiques

Naviguer dans un document HTML en utilisant les attributs Python ne récupérera que la première occurrence d'un élément particulier. Mais que faire si vous souhaitez obtenir la première instance d'un élément sans connaître son chemin complet ? Dans ce cas, vous pouvez utiliser la méthode .find(), en passant le tag (sans les crochets < >) sous forme de chaîne. Par exemple, localisons le premier élément <div> du document HTML.

123456789101112
# Importing libraries from bs4 import BeautifulSoup from urllib.request import urlopen # Reading web page url = "https://codefinity-content-media.s3.eu-west-1.amazonaws.com/18a4e428-1a0f-44c2-a8ad-244cd9c7985e/jesus.html" page = urlopen(url) html = page.read().decode("utf-8") # Reading HTML with BeautifulSoup soup = BeautifulSoup(html, "html.parser") print(soup.find("div"))
copy

De plus, vous pouvez récupérer toutes les instances d'un élément spécifique en utilisant la méthode .find_all(). Cela renverra une liste d'instances. Par exemple, localisons toutes les balises <p> dans le document HTML.

123456789101112
# Importing libraries from bs4 import BeautifulSoup from urllib.request import urlopen # Reading web page url = "https://codefinity-content-media.s3.eu-west-1.amazonaws.com/18a4e428-1a0f-44c2-a8ad-244cd9c7985e/jesus.html" page = urlopen(url) html = page.read().decode("utf-8") # Reading HTML with BeautifulSoup soup = BeautifulSoup(html, "html.parser") print(soup.find_all("p"))
copy

Vous pouvez également utiliser la méthode .find_all() pour trouver non pas une, mais plusieurs balises en fournissant une liste de balises. Par exemple, rassemblons tous les éléments <div> et <title>.

12345678910111213
# Importing libraries from bs4 import BeautifulSoup from urllib.request import urlopen # Reading web page url = "https://codefinity-content-media.s3.eu-west-1.amazonaws.com/18a4e428-1a0f-44c2-a8ad-244cd9c7985e/page.html" page = urlopen(url) html = page.read().decode("utf-8") # Reading HTML with BeautifulSoup soup = BeautifulSoup(html, "html.parser") for el in soup.find_all(["div", "title"]): print(el)
copy

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 5
We're sorry to hear that something went wrong. What happened?
some-alt