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

Certaines balises HTML nécessitent des attributs obligatoires, comme la balise d’ancrage qui requiert l’attribut href ou la balise <img> qui nécessite l’attribut src. Pour accéder à un attribut spécifique, utilisez la méthode .get() après .attrs. Par exemple, récupérez 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, couramment utilisé pour distinguer des éléments ayant la même balise. Pour rechercher des éléments avec des valeurs d’attribut spécifiques, transmettez-les sous forme de dictionnaire au format attr_name: attr_value à la méthode .find_all(), juste après avoir spécifié la balise. Par exemple, trouvez tous les éléments <div> avec l’attribut class défini sur "box" ou l’élément <p> dont l’attribut "id" a la valeur "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() est utilisée à la place de .find_all() pour obtenir un élément par son id, car un id est un identifiant unique et ne peut pas apparaître plus d'une fois. Pour confirmer que seuls des éléments <div> spécifiques ont été récupérés, vérifier les classes attribué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

Suggested prompts:

Can you explain how the `.get()` method works with attributes in BeautifulSoup?

What other attributes can I filter by using `.find_all()`?

How do I handle elements that don't have the attribute I'm searching for?

Awesome!

Completion rate improved to 4.35

bookRecherche Avancée

Glissez pour afficher le menu

Certaines balises HTML nécessitent des attributs obligatoires, comme la balise d’ancrage qui requiert l’attribut href ou la balise <img> qui nécessite l’attribut src. Pour accéder à un attribut spécifique, utilisez la méthode .get() après .attrs. Par exemple, récupérez 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, couramment utilisé pour distinguer des éléments ayant la même balise. Pour rechercher des éléments avec des valeurs d’attribut spécifiques, transmettez-les sous forme de dictionnaire au format attr_name: attr_value à la méthode .find_all(), juste après avoir spécifié la balise. Par exemple, trouvez tous les éléments <div> avec l’attribut class défini sur "box" ou l’élément <p> dont l’attribut "id" a la valeur "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() est utilisée à la place de .find_all() pour obtenir un élément par son id, car un id est un identifiant unique et ne peut pas apparaître plus d'une fois. Pour confirmer que seuls des éléments <div> spécifiques ont été récupérés, vérifier les classes attribué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