Alexsandro Felix

Como Fazer Web Scraping Ético em Python

Se você já pensou em coletar dados da web para um projeto, mas ficou com medo de ser confundido com um hacker de filmes dos anos 90, relaxe! Web scraping pode ser feito de forma ética e responsável — sem invadir sistemas, sobrecarregar servidores ou irritar administradores de sites.

Neste artigo, vamos explorar as melhores práticas para web scraping usando Python, com direito a exemplos de código bem comentados para você testar na sua máquina. Vamos de Beautiful Soup e Requests para extrair dados sem violar termos de serviço.

💡 Dica para aprofundar seus conhecimentos em Python: Se você está começando ou quer se tornar um expert, livros como “Introdução à Programação em Python” (Nilo Ney Coutinho) e “Curso Intensivo de Python” são ótimos recursos para dominar a linguagem antes de partir para o web scraping.

Por Que Ser Ético no Web Scraping?

Antes de sair raspando tudo que vê pela frente, é importante entender que:

Ou seja: seja um scraper educado, não um robô malvado.

📚 Leitura recomendada: “Pense em Python” é um livro fantástico para entender melhor boas práticas de programação e pensar como um desenvolvedor Python consciente.

Regras de Ouro do Web Scraping Ético

Leia os `robots.txt` – Todo site tem um arquivo `robots.txt` (ex: `https://uol.com.br/robots.txt`) que diz quais páginas podem ou não ser acessadas por bots. Respeite isso!

Obs.: o site do Uol foi utilizado apenas como um exemplo, você pode testar os scripts aqui mencionados em qualquer site, por sua conta e risco, claro.

import requests

url = "https://uol.com.br/robots.txt"
response = requests.get(url)
print(response.text)  # Veja as regras antes de prosseguir!

Se você executar o código acima, verá um resultado mais ou menos como este logo abaixo:

Identifique-se com um User-Agent – Enviar requisições sem um `User-Agent` é como bater na porta de alguém com um capuz — suspeito! Use um cabeçalho identificando seu bot

headers = {
    "User-Agent": "MeuBotEducado/1.0 (contato@meusite.com)"
}
response = requests.get("https://exemplo.com", headers=headers)

Não Seja um Ataque DDoS – Faça pausas entre requisições (`time.sleep`) e evite sobrecarregar o servidor

import time
from bs4 import BeautifulSoup

urls = ["https://exemplo.com/pagina1", "https://exemplo.com/pagina2"]

for url in urls:
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # Processe os dados aqui...
    print(soup.title.text)  # Exemplo: extrair o título da página
    
    time.sleep(2)  # Aguarda 2 segundos entre requisições

Siga as APIs Primeiro – Muitos sites oferecem APIs oficiais para acesso a dados. Use-as! Exemplo:

# Exemplo com a API do GitHub (que é pública e documentada)
response = requests.get("https://api.github.com/users/octocat")
data = response.json()
print(data["name"])  # Saída: The Octocat

📚 Quer dominar APIs e requisições web? O livro “curso intensivo de python” tem um capítulo excelente sobre consumo de APIs com Python.

Exemplo Prático: Raspando Dados de Notícias (Sem Ser Malvado)

Vamos extrair títulos de notícias de um site fictício (ou real, se você ajustar a URL), seguindo as boas práticas.

import requests
from bs4 import BeautifulSoup
import time

# Configurações iniciais
url = "https://exemplo-de-noticias.com/ultimas"
headers = {"User-Agent": "MeuBotDeNoticias/1.0 (contato@meusite.com)"}

try:
    # Faz a requisição
    response = requests.get(url, headers=headers)
    response.raise_for_status()  # Verifica se houve erro
    
    # Parseia o HTML
    soup = BeautifulSoup(response.text, 'html.parser')
    noticias = soup.find_all('h2', class_='titulo-noticia')  # Ajuste conforme o site
    
    # Exibe os títulos
    for i, noticia in enumerate(noticias, 1):
        print(f"{i}. {noticia.text.strip()}")
        
except requests.exceptions.RequestException as e:
    print(f"Erro na requisição: {e}")

finally:
    time.sleep(3)  # Pausa educada antes de encerrar

🔍 Se você quer se aprofundar em manipulação de HTML e extração de dados, “Introdução à Programação em Python” do Nilo Ney tem ótimos exercícios para praticar.

Quando Parar? Sinais de Alerta

Se isso acontecer, pare imediatamente e verifique se você está seguindo as regras

Conclusão: Scraping com Consciência

Web scraping é uma ferramenta poderosa, mas com grandes poderes vêm grandes responsabilidades. Siga as boas práticas:

Assim, você coleta dados sem virar o vilão da história!

📖 Quer se tornar um mestre em Python? Confira esses livros incríveis para complementar seus estudos:

E aí, pronto para raspar dados como um gentleman scraper? 🎩✨

Gostou? Compartilhe e deixe seu comentário!

Quer um tutorial mais avançado com Scrapy ou Selenium? Me avise nos comentários!

🔗 Links Úteis:

Sair da versão mobile