Contenu du cours
Extraction de Données Web avec Python
Extraction de Données Web avec Python
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>
.
# 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"))
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"
.
# 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"}))
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>
.
# 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"))
Merci pour vos commentaires !