CodeGym /Cursos /Python SELF PT /Trabalhando com BeautifulSoup e extração de informações

Trabalhando com BeautifulSoup e extração de informações

Python SELF PT
Nível 31 , Lição 1
Disponível

Se você acha que páginas da web são apenas imagens bonitas e textos, tenho uma novidade pra você: elas são como cebolas — com várias camadas e podem te fazer chorar (de alegria, claro!) quando você descobre quantos dados dá pra tirar delas. Hoje vamos explorar páginas HTML com a biblioteca BeautifulSoup. Pegue sua pá virtual — é hora de cavar!

1. Analisando documentos HTML

Páginas simples

Bora dar uma olhada em alguns documentos HTML simples pra entender do que eles são feitos e quais elementos podem ser relevantes para extração de dados.

Exemplo de uma página de notícia:

HTML

<html>
  <head>
    <title>Notícias</title>
  </head>
  <body>
    <h1>Notícia principal do dia</h1>
    <p>Hoje aconteceu algo importante!</p>
  </body>
</html>

Neste exemplo, h1 contém o título da notícia e p — o texto principal.

Impacto da estrutura HTML no scraping

Antes de usar o BeautifulSoup, é importante entender como o documento HTML que você quer analisar está estruturado. Isso ajuda a identificar as partes da página que contêm os dados necessários. Por exemplo, se você está procurando o título da página, fique de olho no <h1>, e para extrair uma lista use <ul> e <li>.

Preparação para o scraping

Antes de começar a extração, é importante identificar as tags e atributos-chave. Por exemplo, se os desenvolvedores da página marcaram os dados com atributos, como class="headline" para um título, isso vai te ajudar muito. Use as ferramentas de desenvolvedor do navegador pra examinar a estrutura do HTML. Clique com o botão direito em um elemento e escolha "Inspecionar" (no Google Chrome).

2. Instalando e configurando bibliotecas

Instalação do BeautifulSoup e requests

Para trabalhar com HTML vamos usar a biblioteca BeautifulSoup. Também, pra carregar as páginas HTML, vamos precisar do requests. A instalação é bem simples e requer apenas alguns comandos no terminal:

Bash

pip install beautifulsoup4 requests

Requests e BeautifulSoup juntos

Requests vai ajudar a puxar o HTML da página web, enquanto BeautifulSoup vai fazer o parsing. Dá uma olhada em como isso funciona na prática:

Python

import requests
from bs4 import BeautifulSoup

# Carregar a página
url = 'https://example.com'
response = requests.get(url)

# Parsear o HTML com BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')

# Extraindo o título da página
title = soup.title.text
print('Título:', title)

3. Navegação e extração de dados por tags

Métodos de navegação

Agora que temos o documento HTML, podemos usar o BeautifulSoup pra navegar nele. O método .select() é incrível pra extrair dados usando seletores CSS.

Extração de dados por tags

O BeautifulSoup oferece métodos pra encontrar elementos pelas tags, como find e find_all. Eles vão te ajudar a pegar aqueles dados preciosos:

Python

# Encontrar o primeiro parágrafo
paragraph = soup.find('p').text
print('Primeiro parágrafo:', paragraph)

# Encontrar todos os itens de lista
list_items = soup.find_all('li')
for item in list_items:
 print('Item da lista:', item.text)

Usando atributos para filtrar

Às vezes você vai precisar extrair elementos que atendam a determinadas condições, como ter uma class específica. O BeautifulSoup facilita isso:

Python

# Extração de elementos com uma classe específica
headline = soup.find('h1', class_='main-headline').text
print('Título:', headline)

4. Usando seletores CSS

O que são seletores CSS?

Seletores CSS — uma ferramenta poderosa pra programadores Python, que permite extrair dados com base em critérios específicos. Eles podem ser usados pra encontrar elementos que compartilham estilos, tornando o scraping mais flexível e preciso.

Usando seletores no BeautifulSoup

O BeautifulSoup permite usar seletores CSS através do método select. Por exemplo:

Python

# Selecionar todos os links
links = soup.select('a')
for link in links:
 print('Link:', link['href'])

Você também pode combinar seletores pra fazer uma busca mais precisa. Por exemplo, soup.select('div.article h2') seleciona todos os h2 dentro de um div com a classe article.

Exemplos de busca com seletores CSS

Vamos aplicar o que aprendemos. Encontre todos os parágrafos com a classe highlight e exiba o texto deles:

Python

# Extração de todos os parágrafos com a classe 'highlight'
highlighted_paragraphs = soup.select('p.highlight')
for para in highlighted_paragraphs:
 print('Parágrafo destacado:', para.text)

Por hoje é isso, não deixe de praticar suas habilidades de scraping até o nosso próximo encontro. Boa sorte no fascinante mundo do parsing!

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION