1. Carregando e fazendo o parsing de documentos HTML
Resumo rápido das funcionalidades
A biblioteca requests
— é nosso "mensageiro",
que sai em busca do código HTML das páginas da web. Ela
faz requisições HTTP e entrega as páginas, tipo um entregador
de pizza, mas sem a "Margherita" e as caixas.
BeautifulSoup
, por sua vez, é nosso
"chef", que facilmente separa o HTML recebido em
ingredientes (tags, atributos e texto), para que possamos usá-los.
Ela nos ajuda a encontrar os elementos certos e armazenar todas as
informações importantes.
Usando a biblioteca requests
Agora estamos prontos para fazer nossa primeira requisição HTTP e obter
o código HTML da página. Vamos praticar carregando a página
example.com
. Este site é uma verdadeira relíquia
da internet e perfeito para começar.
import requests
url = 'http://example.com'
response = requests.get(url)
# Vamos verificar se está tudo certo
if response.status_code == 200:
print("Página carregada com sucesso!")
else:
print("Algo deu errado. Código de erro:", response.status_code)
Esse programa envia uma requisição para o URL e exibe o sucesso ou erro dependendo da resposta. Se tudo der certo, teremos em mãos o código HTML da página em formato de texto.
Analisando códigos de erro
Se você estiver automatizando o parsing, frequentemente irá encontrar páginas que deveriam carregar, mas não carregam. Por isso, analisar códigos de erro é essencial para projetos que fazem parsing de mais de algumas páginas.
O problema é que os donos de sites não gostam muito que seus dados sejam parseados. Primeiro, porque gera carga no site (quando milhares de páginas são parseadas ao mesmo tempo). Segundo, porque são dados deles e eles ganham dinheiro com isso. Existem muitas formas de bloquear o parsing: CAPCHA, CloudFlare, etc.
Para negócios, o ideal é conseguir parsear os concorrentes, mas dificultar que eles façam isso em você. Tipo uma guerra fria.
Usando BeautifulSoup para parsing de HTML
Tendo o código HTML, podemos começar a estudá-lo com
BeautifulSoup
. É como abrir um livro e
ler o conteúdo:
from bs4 import BeautifulSoup
# Passamos o conteúdo do código HTML para o BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
# Vamos dar uma olhada no que tem dentro
print(soup.prettify())
O método prettify()
formata o código HTML certinho,
para que você possa estudar. Na próxima aula, vamos começar
a explorar esse HTML como crianças brincando em uma caixa de areia.
E voltaremos para casa cansados, sujos, mas felizes. :)
3. Prática: carregando e analisando HTML
Para fixar o entendimento, vamos fazer um exercício prático.
Vamos tentar extrair o título e a descrição da página
example.com
. Para isso, usaremos nosso conhecimento
de HTML e o novo conhecimento sobre BeautifulSoup.
Extração de dados
# Extraindo o título da página
title = soup.title.string
print("Título da página:", title)
# Extraindo o título principal (h1)
main_heading = soup.h1.string
print("Título principal:", main_heading)
# Extraindo o conteúdo textual de um parágrafo
paragraph = soup.find('p').text
print("Primeiro parágrafo:", paragraph)
Nesse exemplo, usamos os atributos title
,
h1
, e o método find()
, para pegar
na página os pedaços de informação que queremos. Estamos nos tornando
ciberdetetives, analisando pistas na cena do crime!
4. Erros comuns
Certamente, durante o trabalho com web scraping você
vai se deparar com erros comuns, como lidar incorretamente com requisições
HTTP, extração errada de dados ou erros no parsing do HTML. Desenvolver scripts
robustos e confiáveis exige paciência e prática. Por exemplo, sempre
confira o código de status (response.status_code
) para ter certeza
de que sua requisição foi bem-sucedida. O uso incorreto dos métodos
find()
e find_all()
pode gerar erros se você não considerar
a estrutura do HTML. Sempre analise o HTML antes de iniciar o parsing.
Web scraping tem diversas aplicações práticas: desde coleta de dados para análise até monitoramento automático de preços de produtos. Esse conhecimento pode ser útil em entrevistas, onde podem pedir exemplos de código de projetos. Na prática real, por exemplo, profissionais de marketing usam scraping para monitorar preços de concorrentes, e desenvolvedores — para integrar com sites externos.
Conhecimento sobre web scraping também será útil para processamento de informações em agregadores de notícias e sistemas analíticos. Você poderá automatizar tarefas repetitivas, criando scripts que coletam informações de várias fontes. Vamos continuar desenvolvendo nosso aplicativo virtual e nos sentir verdadeiros mestres da web!
GO TO FULL VERSION