Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Recherche Avancée | Travail avec les Attributs d’Élément dans Beautiful Soup
Web Scraping avec Python

bookRecherche Avancée

Certains balises HTML nécessitent des attributs obligatoires, comme la balise d’ancrage qui requiert l’attribut href ou <img> qui nécessite l’attribut src. Si un attribut spécifique vous intéresse, il est possible d’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

Vous pouvez également rencontrer l’attribut id, qui est très courant et sert à distinguer les éléments sous la même balise. Si des valeurs d’attribut spécifiques vous intéressent, il est possible de les passer sous forme de dictionnaire (au format attr_name: attr_value) en paramètre de .find_all() (juste après avoir spécifié la balise recherchée). Par exemple, seuls les éléments <div> avec l’attribut class défini à "box" nous intéressent, ou bien nous recherchons l’élément <p> dont la valeur de l’attribut "id" est "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

La méthode .find() (au lieu de .find_all()) a été utilisée pour récupérer l’élément avec un identifiant spécifique, car l’id est un identifiant unique et il ne peut pas y avoir plus d’un élément avec la même valeur. Pour garantir que seuls certains éléments <div> soient obtenus, 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

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Awesome!

Completion rate improved to 4.35

bookRecherche Avancée

Glissez pour afficher le menu

Certains balises HTML nécessitent des attributs obligatoires, comme la balise d’ancrage qui requiert l’attribut href ou <img> qui nécessite l’attribut src. Si un attribut spécifique vous intéresse, il est possible d’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

Vous pouvez également rencontrer l’attribut id, qui est très courant et sert à distinguer les éléments sous la même balise. Si des valeurs d’attribut spécifiques vous intéressent, il est possible de les passer sous forme de dictionnaire (au format attr_name: attr_value) en paramètre de .find_all() (juste après avoir spécifié la balise recherchée). Par exemple, seuls les éléments <div> avec l’attribut class défini à "box" nous intéressent, ou bien nous recherchons l’élément <p> dont la valeur de l’attribut "id" est "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

La méthode .find() (au lieu de .find_all()) a été utilisée pour récupérer l’élément avec un identifiant spécifique, car l’id est un identifiant unique et il ne peut pas y avoir plus d’un élément avec la même valeur. Pour garantir que seuls certains éléments <div> soient obtenus, 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
some-alt