---
title: "find() e find_all() no BeautifulSoup: Guia 2026"
slug: find-all-beautiful-soup
date: 2026-02-16T07:48:12+00:00
modified: 2026-02-16T07:48:13+00:00
permalink: https://brightdata.com.br/blog/dados-do-site/find-all-beautiful-soup
type: blog
---

[ Blog ](https://brightdata.com.br/blog "Blog") / [Dados do site](https://brightdata.com.br/blog/dados-do-site)







 [Dados do site](https://brightdata.com.br/blog/dados-do-site)

# find() e find\_all() no BeautifulSoup: Guia 2026

Aprenda a usar os métodos find() e find_all() do BeautifulSoup para extrair dados da web de forma eficiente por classe, ID, texto e atributos em Python.

 12 min de leitura





 [ ![Jacob Nulty](https://media.brightdata.com.br/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.com.br/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>` e `<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>` são métodos essenciais para [Scraping de dados com BeautifulSoup](/blog/how-tos/beautiful-soup-web-scraping), ajudando você a extrair dados de HTML. O método `find()` recupera o primeiro elemento que corresponde aos seus critérios, como `find("div")` para obter o primeiro `div` em uma página, retornando `None` se nenhuma correspondência for encontrada. Enquanto isso, `find_all()` encontra todos os elementos correspondentes e os retorna como uma lista, tornando-o perfeito para extrair vários elementos, como todas as tags `div`. Antes de iniciar sua jornada de Scraping de dados com o BeautifulSoup, certifique-se de ter o Requests e o BeautifulSoup instalados.

**Instale as dependências**

```none
pip install requests

```

```none
pip install beautifulsoup4

```

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

Vamos nos familiarizar com `find()`. Nos exemplos abaixo, usaremos [Quotes To Scrape](https://quotes.toscrape.com/) e [Fake Store API](https://fakestoreapi.com/) para encontrar elementos na página. Ambos os sites foram criados para scraping. Eles não mudam muito, então são perfeitos para aprender.

### <a></a>Localizar por classe

Para encontrar um elemento usando sua `classe`, usamos a palavra-chave `class_`. Você pode se perguntar por que `class_` e não `class`? Em Python, `class` é uma palavra-chave usada para criar tipos de dados personalizados. O sublinhado em `class_` evita que essa palavra-chave cause conflitos com nosso código.

O exemplo abaixo encontra o primeiro `div` com a `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)

```

Aqui está o nosso resultado.

```none
“O mundo como o criamos é um processo do nosso pensamento. Ele não pode ser mudado sem mudar nosso pensamento.”
por Albert Einstein
(sobre)

Tags:

mudança
pensamentos profundos
pensamento
mundo

```

### <a></a>Encontrar por ID

Ao fazer scraping, você também precisará procurar elementos usando sua `identificação`. No exemplo abaixo, usamos o argumento `id` para encontrar o menu na página. Aqui, encontramos o menu na página usando sua `identificação`.

```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)

```

Aqui está o menu depois de extraído e impresso no terminal.

```none
Página inicial
Documentação
GitHub
Compre-me um café

```

### <a></a>Pesquisar por texto

Também podemos pesquisar itens usando seu texto. Para fazer isso, usamos o argumento `string`. O exemplo abaixo encontra o botão `Login` na página.

```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)

```

Como você pode ver, `Login` é impresso no console.

```none
Login

```

### <a></a>Encontrar por atributo

Também podemos usar diferentes atributos para uma pesquisa mais precisa. Desta vez, encontramos novamente a primeira citação da página. No entanto, procuramos um `span` com o `itemprop` do `texto`. Isso encontra novamente nossa primeira citação, mas sem todas as informações extras, como `autor` e `tags`.

```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"})

imprimir(primeira_citação_limpa.texto)

```

Aqui está a versão limpa da nossa primeira citação.

```none
“O mundo como o criamos é um processo do nosso pensamento. Ele não pode ser mudado sem mudar nosso pensamento.”

```

### <a></a>Encontrar usando vários critérios

Como você deve ter notado anteriormente, o argumento `attr` aceita um `dicionário` em vez de um único valor. Isso nos permite passar vários critérios para uma filtragem ainda melhor. Aqui, encontramos o primeiro autor na página usando os atributos `class` e `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"})
imprimir(primeiro_autor.texto)

```

Ao executar isso, você deve obter `Albert Einstein` como resultado.

```none
Albert Einstein

```

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

Agora, vamos examinar esses mesmos exemplos usando `find_all()`. Mais uma vez, usaremos Quotes to Scrape e a API Fake Store. Esses exemplos são quase idênticos, mas com uma diferença importante. `find()` retorna um único elemento. `find_all()` retorna uma `lista` de elementos da página.

### <a></a>Localizar por classe

Para encontrar elementos usando sua `classe`, usamos o argumento de palavra-chave `class_`. O código abaixo usa `find_all()` para extrair cada citação usando sua 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)

```

Quando extraímos e imprimimos a primeira página de citações, ela fica assim.

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

“O mundo como o criamos é um processo do nosso pensamento. Ele não pode ser mudado sem mudar nosso pensamento.”
por Albert Einstein
(sobre)

Tags:

mudança
pensamentos profundos
pensamento
mundo

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

“São nossas escolhas, Harry, que mostram quem realmente somos, muito mais do que nossas habilidades.”
por J.K. Rowling
(sobre)

            Tags:

habilidades
escolhas

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

“Existem apenas duas maneiras de viver sua vida. Uma é como se nada fosse um milagre. A outra é como se tudo fosse um milagre.”
por Albert Einstein
(sobre)

Tags:

inspirador
vida
viver
milagre
milagres

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

“A pessoa, seja homem ou mulher, que não tem prazer em um bom romance, deve ser intoleravelmente estúpida.”
por Jane Austen
(sobre)

            Tags:

analfabetismo
livros
clássico
humor

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

“A imperfeição é beleza, a loucura é genialidade e é melhor ser absolutamente ridículo do que absolutamente chato.”
por Marilyn Monroe
(sobre)

            Tags:

seja-você-mesmo
inspirador

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

“Tente não se tornar um homem de sucesso. Em vez disso, torne-se um homem de valor.”
por Albert Einstein
(sobre)

Tags:

idade adulta
sucesso
valor

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

“É melhor ser odiado pelo que você é do que ser amado pelo que você não é.”
por André Gide
(sobre)

Tags:

vida
amor

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

“Eu não falhei. Apenas descobri 10.000 maneiras que não funcionam.”
por Thomas A. Edison
(sobre)

            Tags:

edison
fracasso
inspirador
parafraseado

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

“Uma mulher é como um saquinho de chá; você nunca sabe o quão forte ele é até colocá-lo na água quente.”
por Eleanor Roosevelt
(sobre)

            Tags:

atribuída erroneamente a Eleanor Roosevelt

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

“Um dia sem sol é como, você sabe, a noite.”
por Steve Martin
(sobre)

Tags:

humor
óbvio
comparação

```

### <a></a>Encontrar por ID

Como falamos ao usar `find()`, `id` é outro dos métodos mais comuns que você pode usar para extrair dados da página. Para extrair dados usando seu `id`, usamos o `argumento id`… assim como fizemos anteriormente.

Em seguida, encontramos todos os itens `ul` com um `id` de `menu`. Há apenas um menu, então, na verdade, encontraremos apenas um.

```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("-------------")
    imprimir(ul.text)

```

Como há apenas um menu na página, nossa saída é exatamente a mesma que quando usamos `find()`.

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

Página inicial
Documentação
GitHub
Compre-me um café

```

### <a></a>Localizar por texto

Agora, vamos extrair itens de uma página usando seu texto. Usaremos o argumento `string`. No exemplo abaixo, encontramos todos `os` elementos `a que` contêm a `string`: `Login`. Mais uma vez, há apenas um.

```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")

para botão em botões_de_login:
    imprimir("-------------")
    imprimir(botão)

```

Sua saída deve ficar assim.

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

```

### <a></a>Encontrar por atributo

Quando você passar para a extração em ambientes reais, muitas vezes precisará usar outros atributos para extrair itens da página. Lembra-se de como a saída do primeiro exemplo ficou confusa? No próximo trecho, usaremos o atributo `itemprop` e, desta vez, extrairemos apenas as citações.

```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)

```

Veja como nossa saída está limpa!

```none
-------------
“O mundo que criamos é um processo do nosso pensamento. Ele não pode ser mudado sem mudar nosso pensamento.”
-------------
“São nossas escolhas, Harry, que mostram quem realmente somos, muito mais do que nossas habilidades.”
-------------
“Existem apenas duas maneiras de viver sua vida. Uma é como se nada fosse um milagre. A outra é como se tudo fosse um milagre.”
-------------
“A pessoa, seja ela um cavalheiro ou uma dama, que não tem prazer em um bom romance, deve ser intoleravelmente estúpida.”
-------------
“A imperfeição é beleza, a loucura é genialidade e é melhor ser absolutamente ridículo do que absolutamente chato.”
-------------
“Tente não se tornar um homem de sucesso. Em vez disso, torne-se um homem de valor.”
-------------
“É melhor ser odiado pelo que você é do que ser amado pelo que você não é.”
-------------
“Eu não falhei. Apenas descobri 10.000 maneiras que não funcionam.”
-------------
“Uma mulher é como um saquinho de chá; você nunca sabe o quão forte ele é até colocá-lo na água quente.”
-------------
“Um dia sem sol é como, você sabe, a noite.”

```

### <a></a>Encontrar usando vários critérios

Desta vez, usaremos o argumento `attrs` de uma forma mais complexa. Aqui, encontramos todos os `pequenos` elementos que têm uma `classe` de `autor` **e** um `itemprop` de `autor`. Fazemos isso passando ambos os atributos para o nosso dicionário `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)

```

Aqui está nossa lista de autores no 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>Técnicas avançadas

Aqui estão algumas técnicas mais avançadas. Nos exemplos abaixo, usamos `find_all()`, mas esses métodos são igualmente compatíveis quando usamos `find()`. Lembre-se: você quer um único elemento ou uma lista deles?

### <a></a>Regex

Regex é uma ferramenta muito poderosa para correspondência de strings. Neste exemplo de código, combinamos com a `string` article para encontrar todos os elementos que contêm `einstein`, independentemente de suas letras maiúsculas ou minúsculas.

```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)

imprimir(f"Total de citações de Einstein: {len(tags)}")

```

Foram encontradas 3 citações na página.

```none
Total de citações de Einstein: 3

```

### <a></a>Funções personalizadas

Agora, vamos escrever uma função personalizada para retornar todas as citações reais de Einstein. No exemplo abaixo, expandimos a expressão regular. Usamos o método `pai` para percorrer e encontrar o cartão que contém a citação. Em seguida, encontramos todos os spans. O primeiro `span` no cartão contém a citação real. Imprimimos seu conteúdo no console.

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

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

    #encontrar todas as tags einstein
    pattern = re.compile(r"einstein", re.IGNORECASE)
    tags = soup.find_all(string=padrão)

    para tag em tags:
        #siga os pais até encontrarmos o cartão da citação
        cartão_completo = tag.parent.parent.parent

        #encontre os spans
        spans = cartão_completo.find_all("span")

        #imprima o primeiro span, ele contém a citação real
        imprimir(spans[0].text)

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

```

Aqui está o nosso resultado.

```none
“O mundo que criamos é um processo do nosso pensamento. Ele não pode ser mudado sem mudar nosso pensamento.”
“Existem apenas duas maneiras de viver sua vida. Uma é como se nada fosse um milagre. A outra é como se tudo fosse um milagre.”
“Tente não se tornar um homem de sucesso. Em vez disso, torne-se um homem de valor.”

```

## <a></a>Bônus: Encontre usando seletores CSS

O método `select` do BeautifulSoup funciona quase exatamente como `find_all()`, mas é um pouco mais flexível. Esse método aceita um seletor CSS. Se você consegue escrever um [seletor](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors), você consegue encontrar. Neste código, encontramos todos os nossos autores usando vários atributos novamente. No entanto, podemos passá-los como um único seletor.

```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']")

para autor em autores:
    imprimir("-------------")
    imprimir(autor.text)

```

Aqui está o nosso resultado.

```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>Conclusão

Agora você conhece praticamente todos os aspectos do`find()`e`do find_all()`no BeautifulSoup. Você não precisa dominar todos esses métodos. A grande variedade de métodos de localização permite que você escolha aquele com o qual se sente mais confortável. Mais importante ainda, você pode usá-los para extrair dados de qualquer página da web. Na produção, especialmente para resultados rápidos e confiáveis com uma alta taxa de sucesso, você pode considerar nossos[Proxies residenciais](/proxy-types/residential-proxies)ou até mesmo[o Navegador de scraping](/products/scraping-browser), que possui um sistema de gerenciamento de Proxy integrado e [recursos de Resolução de CAPTCHA](/products/web-unlocker/captcha-solver).

Inscreva-se e comece hoje mesmo seu teste grátis para encontrar o produto perfeito para suas necessidades.



Contate-nosTeste grátis![google social icon](/wp-content/themes/brightdata/assets/images/ic_google.svg)









 Índice







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+e+find_all%28%29+no+BeautifulSoup%3A+Guia+2026&u=https://brightdata.com.br/blog/dados-do-site/find-all-beautiful-soup) [ ](https://www.linkedin.com/shareArticle?mini=true&title=find%28%29+e+find_all%28%29+no+BeautifulSoup%3A+Guia+2026&url=https://brightdata.com.br/blog/dados-do-site/find-all-beautiful-soup) [ ](http://www.reddit.com/submit?title=find%28%29+e+find_all%28%29+no+BeautifulSoup%3A+Guia+2026&url=https://brightdata.com.br/blog/dados-do-site/find-all-beautiful-soup)







##  Você também pode estar interessado em

 [ ![OpenHuman with Bright Data](https://media.brightdata.com.br/2026/09/OpenHuman-with-Bright-Data.png) ](https://brightdata.com.br/blog/ai/openhuman-with-bright-data "Acesso à Web Pronto para Produção no OpenHuman Através do Bright Data CLI")

 [AI



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

Antonello Zanini

Technical Writer





### Acesso à Web Pronto para Produção no OpenHuman Através do Bright Data CLI

Integre o Bright Data CLI ao OpenHuman para habilitar acesso à web pronto para produção e coleta de dados para agentes de IA.



 09-Sep-2026

 14 min de leitura

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

 [ ![Multimodal Web Scraping with MiniMax](https://media.brightdata.com.br/2026/09/Multimodal-Web-Scraping-with-MiniMax.png) ](https://brightdata.com.br/blog/dados-do-site/multimodal-web-scraping-with-minimax "Scraping de Dados Multimodal com MiniMax")

 [Dados do site



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

Antonello Zanini

Technical Writer





### Scraping de Dados Multimodal com MiniMax

Combine a API Web Unlocker da Bright Data com a visão MiniMax M3 para extrair dados estruturados de imagens e capturas de tela de páginas web.



 09-Sep-2026

 5 min de leitura

 ](https://brightdata.com.br/blog/dados-do-site/multimodal-web-scraping-with-minimax)

 [ ![The 10 Best CLI Tools for Codex in 2026](https://media.brightdata.com.br/2026/08/The-10-Best-CLI-Tools-for-Codex-in-2026.png) ](https://brightdata.com.br/blog/ai/best-cli-tools-for-codex "As 10 Melhores Ferramentas CLI para Codex em 2026 – Testadas & Classificadas")

 [AI



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

Daniel Shashko

Web Data &amp; AI Expert





### As 10 Melhores Ferramentas CLI para Codex em 2026 – Testadas &amp; Classificadas

As 10 ferramentas CLI que tornam o Codex mais rápido e capaz, começando com o Bright Data CLI para acesso real à web de dentro do sandbox.



 06-Sep-2026

 24 min de leitura

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