Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Recherche Avancée | Travailler avec les Attributs d'Élément dans 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
Recherche Avancée

Certaines HTML balises nécessitent des attributs obligatoires, telles que la balise d'ancre qui requiert l'attribut href ou <img> qui requiert l'attribut src. Si vous vous intéressez à un attribut spécifique, vous pouvez utiliser la méthode .get() après .attrs. Par exemple, récupérons tous les attributs src de tous les éléments <img>.

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 img in soup.find_all("img"): print(img.attrs.get("src"))
copy

Il est également possible de rencontrer l'attribut id, qui est assez courant et est utilisé pour distinguer des éléments sous la même balise. Si vous vous intéressez à des valeurs d'attribut spécifiques, vous pouvez les passer sous forme de dictionnaire (au format attr_name: attr_value) en tant que paramètre pour .find_all() (immédiatement après avoir spécifié la balise que vous recherchez). Par exemple, nous nous intéressons uniquement aux éléments <div> dont l'attribut class est défini à "box", ou nous recherchons l'élément <p> avec une valeur d'attribut "id" de "id2".

12345678910111213141516
# 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 div in soup.find_all("div", {"class": "box"}): print(div) # Filtering by id attribute value print(soup.find("p", {"id": "id2"}))
copy

Nous avons utilisé la méthode .find() (au lieu de .find_all()) pour récupérer l’élément avec un id spécifique, car l’id est un identifiant unique et il ne peut y avoir plus d’un élément avec la même valeur. Pour nous assurer que nous avons obtenu uniquement des éléments <div> spécifiques, examinons les classes associées aux éléments <div>.

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 div in soup.find_all("div"): print(div.attrs.get("class"))
copy

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

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