Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Pesquisa Avançada | Trabalhando com Atributos de Elementos no Beautiful Soup
Web Scraping com Python

bookPesquisa Avançada

Certas tags HTML exigem atributos obrigatórios, como a tag âncora que necessita do atributo href ou <img> que requer o atributo src. Caso haja interesse em um atributo específico, é possível utilizar o método .get() após .attrs. Por exemplo, vamos obter todos os atributos src de todos os elementos <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

Também é possível encontrar o atributo id, que é bastante comum e utilizado para diferenciar elementos sob a mesma tag. Caso haja interesse em valores específicos de atributos, é possível passá-los como um dicionário (no formato attr_name: attr_value) como parâmetro para .find_all() (imediatamente após especificar a tag que está sendo buscada). Por exemplo, o interesse pode ser apenas por elementos <div> com o atributo class definido como "box", ou pela busca do elemento <p> com o valor do atributo "id" igual a "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

Utilizou-se o método .find() (em vez de .find_all()) para recuperar o elemento com um id específico, pois o id é um identificador único e não pode haver mais de um elemento com o mesmo valor. Para garantir que apenas elementos <div> específicos fossem obtidos, é necessário examinar as classes que os elementos <div> possuem.

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

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain what the output of the last code block will look like?

How can I filter `<div>` elements by multiple classes?

What other attributes can I filter elements by using BeautifulSoup?

Awesome!

Completion rate improved to 4.35

bookPesquisa Avançada

Deslize para mostrar o menu

Certas tags HTML exigem atributos obrigatórios, como a tag âncora que necessita do atributo href ou <img> que requer o atributo src. Caso haja interesse em um atributo específico, é possível utilizar o método .get() após .attrs. Por exemplo, vamos obter todos os atributos src de todos os elementos <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

Também é possível encontrar o atributo id, que é bastante comum e utilizado para diferenciar elementos sob a mesma tag. Caso haja interesse em valores específicos de atributos, é possível passá-los como um dicionário (no formato attr_name: attr_value) como parâmetro para .find_all() (imediatamente após especificar a tag que está sendo buscada). Por exemplo, o interesse pode ser apenas por elementos <div> com o atributo class definido como "box", ou pela busca do elemento <p> com o valor do atributo "id" igual a "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

Utilizou-se o método .find() (em vez de .find_all()) para recuperar o elemento com um id específico, pois o id é um identificador único e não pode haver mais de um elemento com o mesmo valor. Para garantir que apenas elementos <div> específicos fossem obtidos, é necessário examinar as classes que os elementos <div> possuem.

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

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 5
some-alt