---
title: "find() et find_all() dans BeautifulSoup : Guide 2026"
slug: find-all-beautiful-soup
date: 2026-02-16T07:47:56+00:00
modified: 2026-02-16T07:47:57+00:00
permalink: https://brightdata.fr/blog/donnees-web/find-all-beautiful-soup
type: blog
---

[ Blog ](https://brightdata.fr/blog "Blog") / [Données Web](https://brightdata.fr/blog/donnees-web)







 [Données Web](https://brightdata.fr/blog/donnees-web)

# find() et find\_all() dans BeautifulSoup : Guide 2026

Apprenez à utiliser les méthodes find() et find_all() de BeautifulSoup pour extraire efficacement des données web par classe, ID, texte et attributs dans Python.

 13 min de lecture





 [ ![Jacob Nulty](https://media.brightdata.fr/2024/12/Jacob-Nulty-50x50.jpg) ](https://brightdata.com/blog/authors/jake-nulty)

 [Jake Nulty

Technical Writer

 ](https://brightdata.com/blog/authors/jake-nulty)





 ![How To Use BeautifulSoup’s find and find_all blog image](https://media.brightdata.fr/2025/01/How-To-Use-BeautifulSoups-find-and-find_all.svg)





`<a href="https://www.crummy.com/software/BeautifulSoup/bs4/doc/#:~:text=using%20tag%20names-,The,-simplest%20way%20to" rel="noreferrer noopener nofollow" target="_blank">find()</a>` et `<a href="https://www.crummy.com/software/BeautifulSoup/bs4/doc/#:~:text=link1%22%3EElsie%3C/a%3E-,If,-you%20need%20to" rel="noreferrer noopener nofollow" target="_blank">find_all()</a>` sont des méthodes essentielles pour [le Scraping web avec BeautifulSoup](/blog/how-tos/beautiful-soup-web-scraping), qui vous aident à extraire des données du HTML. La méthode `find()` récupère le premier élément correspondant à vos critères, par exemple `find("div")` pour obtenir le premier `div` d’une page, et renvoie `None` si aucune correspondance n’est trouvée. Quant à `find_all(), elle` trouve tous les éléments correspondants et les renvoie sous forme de liste, ce qui la rend parfaite pour extraire plusieurs éléments tels que toutes les balises `div`. Avant de vous lancer dans le Scraping web avec BeautifulSoup, assurez-vous d’avoir installé Requests et BeautifulSoup.

**Installez les dépendances**

```none
pip install requests

```

```none
pip install beautifulsoup4

```

## <a></a>find()

Familiarisons-nous avec `find()`. Dans les exemples ci-dessous, nous utiliserons [Quotes To Scrape](https://quotes.toscrape.com/) et [Fake Store API](https://fakestoreapi.com/) pour trouver des éléments sur la page. Ces deux sites ont été conçus pour le scraping. Ils ne changent pas beaucoup, ils sont donc parfaits pour apprendre.

### <a></a>Recherche par classe

Pour trouver un élément à l’aide de sa `classe`, nous utilisons le mot-clé `class_`. Vous vous demandez peut-être pourquoi `class_` et non `class`? En Python, `class` est un mot-clé utilisé pour créer des types de données personnalisés. Le trait de soulignement dans `class_` empêche ce mot-clé d’entrer en conflit avec notre code.

L’exemple ci-dessous recherche la première `balise div` avec la `classe`: `quote`.

```none
import requests
from bs4 import BeautifulSoup

response = requests.get("https://quotes.toscrape.com")

soup = BeautifulSoup(response.text, "html.parser")

first_quote = soup.find("div", class_="quote")
print(first_quote.text)

```

Voici notre résultat.

```none
« Le monde tel que nous l'avons créé est le résultat de notre pensée. Il ne peut être changé sans changer notre façon de penser. »
Albert Einstein
(à propos de)

Tags :

changement
réflexions profondes
pensée
monde

```

### <a></a>Rechercher par ID

Lors du scraping, vous aurez également souvent besoin de rechercher des éléments à l’aide de leur `identifiant`. Dans l’exemple ci-dessous, nous utilisons l’argument `id` pour trouver le menu sur la page. Ici, nous trouvons le menu sur la page à l’aide de son `identifiant`.

```none
import requests
from bs4 import BeautifulSoup

response = requests.get("https://fakestoreapi.com")

soup = BeautifulSoup(response.text, "html.parser")

ul = soup.find("ul", id="menu")

print(ul.text)

```

Voici le menu une fois que nous l’avons extrait et affiché dans le terminal.

```none
Accueil
Docs
GitHub
Offrez-moi un café

```

### <a></a>Rechercher par texte

Nous pouvons également rechercher des éléments à l’aide de leur texte. Pour ce faire, nous utilisons l’argument `string`. L’exemple ci-dessous permet de trouver le bouton `Connexion` sur la page.

```none
import requests
from bs4 import BeautifulSoup

response = requests.get("https://quotes.toscrape.com")

soup = BeautifulSoup(response.text, "html.parser")

login_button = soup.find("a", string="Login")
print(login_button.text)

```

Comme vous pouvez le voir, « `Login` » s’affiche dans la console.

```none
Connexion

```

### <a></a>Recherche par attribut

Nous pouvons également utiliser différents attributs pour une recherche plus précise. Cette fois-ci, nous recherchons à nouveau la première citation de la page. Cependant, nous recherchons une `balise span` avec l’attrib `ut itemprop` de `texte`. Cela permet à nouveau de trouver notre première citation, mais sans tous les éléments supplémentaires, tels que `l'auteur` et `les balises`.

```none
import requests
from bs4 import BeautifulSoup

response = requests.get("https://quotes.toscrape.com")

soup = BeautifulSoup(response.text, "html.parser")

first_clean_quote = soup.find("span", attrs={"itemprop": "text"})

print(first_clean_quote.text)

```

Voici la version épurée de notre première citation.

```none
« Le monde tel que nous l'avons créé est le résultat de notre pensée. Il ne peut être changé sans changer notre façon de penser. »

```

### <a></a>Recherche à l’aide de plusieurs critères

Comme vous l’avez peut-être remarqué précédemment, l’argument `attr` prend un `dictionnaire` au lieu d’une valeur unique. Cela nous permet de passer plusieurs critères pour un filtrage encore plus efficace. Ici, nous trouvons le premier auteur de la page à l’aide des attributs `class` et `itemprop`.

```none
import requests
from bs4 import BeautifulSoup

response = requests.get("https://quotes.toscrape.com")

soup = BeautifulSoup(response.text, "html.parser")

first_author = soup.find("small", attrs={"class": "author", "itemprop": "author"})
print(first_author.text)

```

Lorsque vous exécutez ce code, vous devriez obtenir `Albert Einstein` comme résultat.

```none
Albert Einstein

```

## <a></a>find\_all()

Passons maintenant en revue ces mêmes exemples à l’aide de `find_all()`. Une fois encore, nous utiliserons Quotes to Scrape et l’API Fake Store. Ces exemples sont presque identiques, à une différence majeure près. `find()` renvoie un seul élément. `find_all()` renvoie une `liste` d’éléments de la page.

### <a></a>Recherche par classe

Pour rechercher des éléments à l’aide de leur `classe`, nous utilisons l’argument clé `class_`. Le code ci-dessous utilise `find_all()` pour extraire chaque citation à l’aide de sa classe CSS.

```none
import requests
from bs4 import BeautifulSoup

response = requests.get("https://quotes.toscrape.com")

soup = BeautifulSoup(response.text, "html.parser")

quotes = soup.find_all("div", class_="quote")

for quote in quotes:
    print("-------------")
    print(quote.text)

```

Lorsque nous extrayons et imprimons la première page de citations, cela donne le résultat suivant.

```none
-------------

« Le monde tel que nous l'avons créé est le résultat de notre pensée. Il ne peut être changé sans changer notre façon de penser. »
par Albert Einstein
(à propos de)

Tags :

changement
pensées profondes
pensée
monde

-------------

« Ce sont nos choix, Harry, qui montrent ce que nous sommes vraiment, bien plus que nos capacités. »
par J.K. Rowling
(à propos de)

            Tags :

capacités
choix

-------------

« Il n'y a que deux façons de vivre sa vie. L'une est comme si rien n'était un miracle. L'autre est comme si tout était un miracle. »
par Albert Einstein
(à propos de)

Tags :

inspirant
vie
vivre
miracle
miracles

-------------

« La personne, qu'il s'agisse d'un gentleman ou d'une dame, qui ne prend pas plaisir à lire un bon roman, doit être d'une stupidité intolérable. »
par Jane Austen
(à propos de)

            Tags :

analphabétisme
livres
classique
humour

-------------

« L'imperfection est beauté, la folie est génie, et il vaut mieux être absolument ridicule qu'absolument ennuyeux. »
par Marilyn Monroe
(à propos de)

            Tags :

être soi-même
inspirant

-------------

« Ne cherchez pas à devenir un homme qui réussit. Cherchez plutôt à devenir un homme de valeur. »
par Albert Einstein
(à propos de)

Tags :

âge adulte
succès
valeur

-------------

« Mieux vaut être détesté pour ce que l'on est que d'être aimé pour ce que l'on n'est pas. »
par André Gide
(à propos de)

            Tags :

vie
amour

-------------

« Je n'ai pas échoué. J'ai simplement trouvé 10 000 façons qui ne fonctionnent pas. »
par Thomas A. Edison
(à propos de)

            Tags :

edison
échec
inspirant
paraphrasé

-------------

« Une femme est comme un sachet de thé : on ne sait jamais à quel point elle est forte tant qu'elle n'est pas plongée dans l'eau bouillante. »
par Eleanor Roosevelt
(à propos de)

            Tags :

attribution erronée-eleanor-roosevelt

-------------

« Une journée sans soleil, c'est comme, vous savez, la nuit. »
par Steve Martin
(à propos de)

Tags :

humour
évidence
comparaison

```

### <a></a>Rechercher par ID

Comme nous l’avons vu lors de l’utilisation `de find()`, `id` est une autre méthode couramment utilisée pour extraire des données d’une page. Pour extraire des données à l’aide de leur `id`, nous utilisons l’argument `id`… comme nous l’avons fait précédemment.

Nous trouvons ensuite tous les éléments `ul` avec un `id` de `menu`. Il n’y a qu’un seul menu, donc nous n’en trouverons qu’un seul.

```none
import requests
from bs4 import BeautifulSoup

response = requests.get("https://fakestoreapi.com")

soup = BeautifulSoup(response.text, "html.parser")

uls = soup.find_all("ul", id="menu")

for ul in uls:
    print("-------------")
    print(ul.text)

```

Comme il n’y a qu’un seul menu sur la page, notre résultat est exactement le même que lorsque nous utilisons `find()`.

```none
-------------

Accueil
Docs
GitHub
Offrez-moi un café

```

### <a></a>Rechercher par texte

Nous allons maintenant extraire des éléments d’une page à l’aide de leur texte. Nous utiliserons l’argument `string`. Dans l’exemple ci-dessous, nous trouvons tous `les` éléments contenant la `chaîne`: `Login`. Une fois encore, il n’y en a qu’un seul.

```none
import requests
from bs4 import BeautifulSoup

response = requests.get("https://quotes.toscrape.com")

soup = BeautifulSoup(response.text, "html.parser")

login_buttons = soup.find_all("a", string="Login")

for button in login_buttons:
    print("-------------")
    print(button)

```

Votre résultat devrait ressembler à ceci.

```none
-------------
<a href="/login">Connexion</a>

```

### <a></a>Recherche par attribut

Lorsque vous passez au scraping dans la nature, vous aurez souvent besoin d’utiliser d’autres attributs pour extraire des éléments de la page. Vous vous souvenez du résultat désordonné du premier exemple ? Dans le prochain extrait, nous utiliserons l’attribut `itemprop` et n’extrairons que les citations cette fois-ci.

```none
import requests
from bs4 import BeautifulSoup

response = requests.get("https://quotes.toscrape.com")

soup = BeautifulSoup(response.text, "html.parser")

clean_quotes = soup.find_all("span", attrs={"itemprop": "text"})

for quote in clean_quotes:
    print("-------------")
    print(quote.text)

```

Regardez comme notre résultat est propre !

```none
-------------
« Le monde tel que nous l'avons créé est le résultat de notre pensée. Il ne peut être changé sans changer notre façon de penser. »
-------------
« Ce sont nos choix, Harry, qui révèlent qui nous sommes vraiment, bien plus que nos capacités. »
-------------
« Il n'y a que deux façons de vivre sa vie. L'une est de considérer que rien n'est un miracle. L'autre est de considérer que tout est un miracle. »
-------------
« La personne, qu'elle soit un homme ou une femme, qui ne prend pas plaisir à lire un bon roman, doit être d'une stupidité intolérable. »
-------------
« L'imperfection est beauté, la folie est génie, et il vaut mieux être absolument ridicule qu'absolument ennuyeux. »
-------------
« N'essayez pas de devenir un homme qui réussit. Devenez plutôt un homme de valeur. »
-------------
« Il vaut mieux être détesté pour ce que vous êtes que d'être aimé pour ce que vous n'êtes pas. »
-------------
« Je n'ai pas échoué. J'ai simplement trouvé 10 000 façons qui ne fonctionnent pas. »
-------------
« Une femme est comme un sachet de thé : on ne sait jamais à quel point elle est forte tant qu'elle n'est pas plongée dans l'eau chaude. »
-------------
« Une journée sans soleil, c'est comme la nuit. »

```

### <a></a>Recherche à l’aide de plusieurs critères

Cette fois-ci, nous allons utiliser l’argument `attrs` de manière plus complexe. Ici, nous recherchons tous les `petits` éléments qui ont une `classe` `author` **et** un `itemprop` `author`. Pour ce faire, nous passons les deux attributs dans notre dictionnaire `attrs`.

```none
import requests
from bs4 import BeautifulSoup

response = requests.get("https://quotes.toscrape.com")

soup = BeautifulSoup(response.text, "html.parser")

authors = soup.find_all("small", attrs={"class": "author", "itemprop": "author"})

for author in authors:
    print("-------------")
    print(author.text)

```

Voici notre liste d’auteurs dans la console.

```none
-------------
Albert Einstein
-------------
J.K. Rowling
-------------
Albert Einstein
-------------
Jane Austen
-------------
Marilyn Monroe
-------------
Albert Einstein
-------------
André Gide
-------------
Thomas A. Edison
-------------
Eleanor Roosevelt
-------------
Steve Martin

```

## <a></a>Techniques avancées

Voici quelques techniques plus avancées. Dans les exemples ci-dessous, nous utilisons `find_all()`, mais ces méthodes sont également compatibles avec `find()`. N’oubliez pas : voulez-vous un seul élément ou une liste d’éléments ?

### <a></a>Regex

Regex est un outil très puissant pour la correspondance de chaînes. Dans cet exemple de code, nous le combinons avec la `chaîne` article pour trouver tous les éléments contenant `einstein`, quelle que soit leur casse.

```none
import requests
import re
from bs4 import BeautifulSoup

response = requests.get("https://quotes.toscrape.com")

soup = BeautifulSoup(response.text, "html.parser")

pattern = re.compile(r"einstein", re.IGNORECASE)

tags = soup.find_all(string=pattern)

print(f"Nombre total de citations d'Einstein : {len(tags)}")

```

Il y a 3 citations trouvées sur la page.

```none
Nombre total de citations d'Einstein : 3

```

### <a></a>Fonctions personnalisées

Maintenant, écrivons une fonction personnalisée pour renvoyer toutes les citations réelles d’Einstein. Dans l’exemple ci-dessous, nous développons l’expression régulière. Nous utilisons la méthode `parent` pour parcourir et trouver la carte contenant la citation. Ensuite, nous trouvons toutes les balises span. La première `balise span` de la carte contient la citation réelle. Nous affichons son contenu dans la console.

```none
import requests
import re
from bs4 import BeautifulSoup

def find_einstein_quotes(http_response):
    soup = BeautifulSoup(http_response.text, "html.parser")

    #find all einstein tags
    pattern = re.compile(r"einstein", re.IGNORECASE)
    tags = soup.find_all(string=pattern)

    for tag in tags:
        #suivre les parents jusqu'à obtenir la carte de citation
        full_card = tag.parent.parent.parent

        #trouver les spans
        spans = full_card.find_all("span")

        #imprimer le premier span, il contient la citation proprement dite
        print(spans[0].text)

if __name__ == "__main__":
    response = requests.get("https://quotes.toscrape.com")
    find_einstein_quotes(response)

```

Voici notre résultat.

```none
« Le monde tel que nous l'avons créé est le résultat de notre pensée. Il ne peut être changé sans changer notre façon de penser. »
« Il n'y a que deux façons de vivre sa vie. L'une est de considérer que rien n'est un miracle. L'autre est de considérer que tout est un miracle. »
« Ne cherchez pas à devenir un homme qui réussit. Cherchez plutôt à devenir un homme de valeur. »

```

## <a></a>Bonus : recherche à l’aide de sélecteurs CSS

La méthode `select` de BeautifulSoup fonctionne presque exactement comme `find_all()`, mais elle est un peu plus flexible. Cette méthode utilise un sélecteur CSS. Si vous pouvez écrire un [sélecteur](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors), vous pouvez le trouver. Dans ce code, nous trouvons à nouveau tous nos auteurs en utilisant plusieurs attributs. Cependant, nous pouvons les passer sous la forme d’un seul sélecteur.

```none
import requests
from bs4 import BeautifulSoup

response = requests.get("https://quotes.toscrape.com")

soup = BeautifulSoup(response.text, "html.parser")

authors = soup.select("small[class='author'][itemprop='author']")

for author in authors:
    print("-------------")
    print(author.text)

```

Voici notre résultat.

```none
-------------
Albert Einstein
-------------
J.K. Rowling
-------------
Albert Einstein
-------------
Jane Austen
-------------
Marilyn Monroe
-------------
Albert Einstein
-------------
André Gide
-------------
Thomas A. Edison
-------------
Eleanor Roosevelt
-------------
Steve Martin

```

## <a></a>Conclusion

Vous connaissez désormais tous les aspects des`méthodes find()`et`find_all()`de BeautifulSoup. Vous n’avez pas besoin de maîtriser toutes ces méthodes. La grande variété de méthodes de recherche vous permet de choisir celle qui vous convient le mieux. Plus important encore, vous pouvez les utiliser pour extraire des données de n’importe quelle page web. En production, en particulier pour obtenir des résultats rapides et fiables avec un taux de réussite élevé, vous pouvez envisager d’utiliser nos[Proxys résidentiels](/proxy-types/residential-proxies)ou même[notre Navigateur de scraping](/products/scraping-browser)qui dispose d’un système de gestion de Proxy intégré et [de capacités de Résolution de CAPTCHA](/products/web-unlocker/captcha-solver).

Inscrivez-vous et commencez votre essai gratuit dès aujourd’hui pour trouver le produit qui répond parfaitement à vos besoins.



Contacter ventesEssai gratuit![google social icon](/wp-content/themes/brightdata/assets/images/ic_google.svg)









 Table des matières







Dedicated Scraper APIs &amp; No-Code Scrapers

Over 1000 scrapers for all popular domains. Simplify your web scraping.

[See pricing](/pricing/web-scraper "See pricing")

Just want data? Skip scraping.

Hundreds of ready-to-use datasets from all popular domains.

[See pricing](/pricing/datasets "See pricing")







 [ ](https://news.ycombinator.com/submitlink?t=find%28%29+et+find_all%28%29+dans+BeautifulSoup+%3A+Guide+2026&u=https://brightdata.fr/blog/donnees-web/find-all-beautiful-soup) [ ](https://www.linkedin.com/shareArticle?mini=true&title=find%28%29+et+find_all%28%29+dans+BeautifulSoup+%3A+Guide+2026&url=https://brightdata.fr/blog/donnees-web/find-all-beautiful-soup) [ ](http://www.reddit.com/submit?title=find%28%29+et+find_all%28%29+dans+BeautifulSoup+%3A+Guide+2026&url=https://brightdata.fr/blog/donnees-web/find-all-beautiful-soup)







##  Vous pourriez aussi être intéressé par

 [ ![OpenHuman with Bright Data](https://media.brightdata.fr/2026/09/OpenHuman-with-Bright-Data.png) ](https://brightdata.fr/blog/ai/openhuman-with-bright-data "Accès Web Prêt pour la Production dans OpenHuman via le CLI Bright Data")

 [AI



 ![Antonello Zanini](https://media.brightdata.fr/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Accès Web Prêt pour la Production dans OpenHuman via le CLI Bright Data

Intégrez le CLI Bright Data avec OpenHuman pour permettre un accès web prêt pour la production et la collecte de données pour les agents IA.



 09-Sep-2026

 14 min de lecture

 ](https://brightdata.fr/blog/ai/openhuman-with-bright-data)

 [ ![Multimodal Web Scraping with MiniMax](https://media.brightdata.fr/2026/09/Multimodal-Web-Scraping-with-MiniMax.png) ](https://brightdata.fr/blog/donnees-web/multimodal-web-scraping-with-minimax "Scraping Web Multimodal avec MiniMax")

 [Données Web



 ![Antonello Zanini](https://media.brightdata.fr/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Scraping Web Multimodal avec MiniMax

Associez Bright Data Web Unlocker avec la vision MiniMax M3 pour extraire des données structurées à partir d’images et de captures d’écran de pages web.



 09-Sep-2026

 5 min de lecture

 ](https://brightdata.fr/blog/donnees-web/multimodal-web-scraping-with-minimax)

 [ ![The 10 Best CLI Tools for Codex in 2026](https://media.brightdata.fr/2026/08/The-10-Best-CLI-Tools-for-Codex-in-2026.png) ](https://brightdata.fr/blog/ai/best-cli-tools-for-codex "Les 10 meilleurs outils CLI pour Codex en 2026 – Testés & Classés")

 [AI



 ![Daniel Shashko](https://media.brightdata.fr/2022/04/Daniel-Shashko-2-50x50.png)

Daniel Shashko

Web Data &amp; AI Expert





### Les 10 meilleurs outils CLI pour Codex en 2026 – Testés &amp; Classés

Les 10 outils CLI qui rendent Codex plus rapide et plus capable, en commençant par le Bright Data CLI pour un accès web réel depuis l’intérieur du sandbox.



 06-Sep-2026

 24 min de lecture

 ](https://brightdata.fr/blog/ai/best-cli-tools-for-codex)
