✅ Atualizado para Python 3.13 (Dezembro 2024)
Web scraping com BeautifulSoup 4.12+, Scrapy 2.11+, Selenium 4.x e casos práticos reais.
Salve salve Pythonista!
No artigo de hoje vamos falar sobre Web Scraping com Python!
Este é um tópico extremamente relevante, pois a cada dia que passa a Internet está cada vez mais inundada de dados.
Portanto, dominar o Web Scraping pode abrir muitas portas para análises de dados e tomada de decisões baseada em dados.
Já se pegou desejando poder coletar dados automaticamente da web? Quer seja notícias atualizadas, precificação de produtos ou localização geográfica, os dados da web são uma mina de ouro em potencial para aprendizado de máquina ou para manter-se atualizado com as últimas tendências.
Primeiramente, vamos definir o que é Web Scraping.
Web Scraping é uma técnica utilizada através da programação para extrair informações a partir da web.
Ele automaticamente carrega páginas da web e extrai dados delas.
É a chave para a coleta de Big Data e permite gerar milhares ou até milhões de dados em um curto período de tempo.
Essencialmente, o Web Scraping envolve fazer uma solicitação para o servidor que hospeda a página que você precisa “raspar”. O servidor responde à solicitação, enviando o conteúdo da página. Às vezes, você deve enviar algumas solicitações mais para reproduzir o comportamento de um usuário da web, como entrar em uma conta.
Em Python, várias bibliotecas estão disponíveis para tornar esse trabalho mais fácil, como BeautifulSoup, Scrapy e Selenium. Nos próximos artigos, traremos várias demos de códigos utilizando essas bibliotecas, então mantenha-se conectado!
Agora, você pode perguntar, por que é importante aprender Web Scraping? Bem, aqui estão alguns pontos:
- Entrada para a análise de dados: As possibilidades são infinitas quando você tem acesso a dados grandes e relevantes. Você pode construir modelos preditivos, entender tendências, ou alimentar um sistema de recomendação.
- Monitoramento de preços: É extremamente útil para frentes de e-commerce, onde podemos analisar os preços de produtos semelhantes e planejar estratégias de preços.
- Extração de dados de redes sociais: As redes sociais estão repletas de dados acionáveis e de opiniões que podem ser extremamente úteis para a estratégia de marketing de uma empresa.
No entanto, é importante mencionar que, embora o Web Scraping seja legal para fins de pesquisa e aprendizado, existem leis e regulamentos que regem a coleta de dados e o respeito à privacidade e aos termos de uso deve ser prioridade.
Principais Bibliotecas Python para Web Scraping
BeautifulSoup 🥣
Quando usar: Parsing de HTML/XML estático
Vantagens: Simples, rápido para aprender
Desvantagens: Não executa JavaScript
1
2
3
4
5
6
from bs4 import BeautifulSoup
import requests
response = requests.get('https://exemplo.com')
soup = BeautifulSoup(response.content, 'html.parser')
titulos = soup.find_all('h2', class_='titulo')
Scrapy 🕷️
Quando usar: Projetos grandes, crawling em escala
Vantagens: Assíncrono, muito rápido, framework completo
Desvantagens: Curva de aprendizado maior
Selenium 🌐
Quando usar: Sites com JavaScript/SPA
Vantagens: Executa JavaScript, simula usuário real
Desvantagens: Mais lento, consome mais recursos
Casos de Uso Reais
1. Monitoramento de Preços E-commerce
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import requests
from bs4 import BeautifulSoup
import time
def monitorar_preco(url, preco_alvo):
"""Monitora preço de produto e alerta quando atingir valor desejado"""
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# Exemplo: Amazon
preco_texto = soup.find('span', class_='a-price-whole').text
preco_atual = float(preco_texto.replace('.', '').replace(',', '.'))
if preco_atual <= preco_alvo:
print(f"🎉 Alerta! Preço caiu para R$ {preco_atual}")
return True
return False
2. Agregador de Notícias
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def coletar_noticias_tecnologia():
"""Coleta últimas notícias de tech de múltiplos sites"""
sites = [
'https://techcrunch.com',
'https://www.theverge.com',
]
noticias = []
for site in sites:
response = requests.get(site)
soup = BeautifulSoup(response.content, 'html.parser')
# Busca títulos de notícias
artigos = soup.find_all('article', limit=5)
for artigo in artigos:
titulo = artigo.find('h2').text.strip()
link = artigo.find('a')['href']
noticias.append({'titulo': titulo, 'url': link})
return noticias
3. Análise de Sentimento em Reviews
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def coletar_reviews_produto(url):
"""Coleta reviews de produtos para análise de sentimento"""
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
reviews = []
elementos_review = soup.find_all('div', class_='review')
for review in elementos_review:
texto = review.find('p', class_='review-text').text
nota = review.find('span', class_='rating').text
reviews.append({
'texto': texto,
'nota': int(nota)
})
# Análise básica
media_notas = sum(r['nota'] for r in reviews) / len(reviews)
return reviews, media_notas
Boas Práticas de Web Scraping
✅ FAÇA:
- Respeite robots.txt: Verifique o que o site permite
-
Use delays: Adicione
time.sleep()entre requests - User-Agent personalizado: Identifique seu bot
- Cache de dados: Evite requests desnecessários
- Trate erros: Use try/except adequadamente
❌ NÃO FAÇA:
- Sobrecarga de requests: Pode derrubar o servidor
- Ignorar termos de uso: Pode resultar em bloqueio ou ações legais
- Scraping de dados sensíveis: LGPD/GDPR se aplicam
- Revenda de dados: Sem permissão explícita
Quando NÃO Usar Web Scraping
❌ Se o site oferece API oficial
Exemplo: Twitter, Reddit, GitHub têm APIs robustas
❌ Se viola termos de uso explicitamente
Exemplo: LinkedIn proíbe scraping comercial
❌ Se os dados são protegidos por login/paywall
Viola direitos autorais e pode ser ilegal
❌ Se você pode usar datasets públicos
Exemplo: Kaggle, Google Dataset Search, dados.gov.br
Comparação: API vs Web Scraping
| Critério | API Oficial | Web Scraping |
|---|---|---|
| Confiabilidade | ✅ Alta | ⚠️ Média (site pode mudar) |
| Performance | ✅ Rápida | ⚠️ Mais lenta |
| Legalidade | ✅ Clara | ⚠️ Área cinza |
| Manutenção | ✅ Baixa | ❌ Alta |
| Custo | ⚠️ Pode ter limite | ✅ Grátis |
| Dados disponíveis | ⚠️ Limitado | ✅ Tudo visível |
Curtiu esse conteúdo? ![]()
Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?
Conclusão
Neste guia sobre Web Scraping, você aprendeu:
✅ O que é - Técnica para extrair dados da web automaticamente
✅ Principais bibliotecas - BeautifulSoup, Scrapy, Selenium
✅ Casos de uso reais - Monitoramento de preços, agregador de notícias, análise de reviews
✅ Boas práticas - Respeitar robots.txt, usar delays, User-Agent
✅ Quando não usar - APIs oficiais disponíveis, viola termos de uso
✅ API vs Scraping - Comparação de vantagens e desvantagens
Principais lições:
- BeautifulSoup para HTML estático e aprendizado
- Scrapy para projetos em escala e performance
- Selenium quando precisa executar JavaScript
- Sempre respeite robots.txt e termos de uso
- Prefira APIs oficiais quando disponíveis
Próximos passos:
- Aprenda BeautifulSoup na prática
- Explore web scraping com IA usando LangChain + Playwright
- Domine técnicas avançadas de parsing HTML
- Estude sobre proxies e rotação de IPs
Independentemente de você ser um cientista de dados aspirante ou alguém simplesmente curioso que gostaria de extrair dados da web para projetos pessoais, entender o Web Scraping certamente será útil.
Até a próxima, e continuem raspando! 🕷️
"Porque o Senhor dá a sabedoria, e da sua boca vem a inteligência e o entendimento" Pv 2:6