26 de fevereiro de 2026

Web Scraping Raiz com Python: Automatize Buscas Sem API!

Você já precisou coletar dados de um site, mas descobriu que ele não oferece uma API oficial ou que a API é paga e complexa? O Web Scraping (raspagem de dados) é a solução “raiz” para esse problema.

Neste post, vou te mostrar como criar um robô simples em Python que entra em um site real, “preenche” um campo de busca e extrai os principais resultados (título, link e resumo). Tudo isso rodando de forma gratuita no Google Colab.

O Que Você Vai Aprender:

  1. Como acessar páginas da web programaticamente com a biblioteca requests.

  2. Como “escanear” e extrair informações do HTML com a BeautifulSoup.

  3. Como evitar bloqueios comuns usando Headers (User-Agent).

  4. Como estruturar um loop para organizar múltiplos resultados.


O Desafio: Scraping em Sites de Busca

Muitos sites, incluindo o Google, possuem sistemas complexos para detectar e bloquear robôs. Para este tutorial, escolhemos a Wikipedia. Ela é excelente para aprender porque possui um HTML muito bem estruturado e organizado, o que facilita a identificação das tags que precisamos “raspar”.

O Código Completo

Abaixo está o script Python finalizado. Você pode copiá-lo e colá-lo diretamente em uma célula do seu Google Colab.

Python:


import requests
from bs4 import BeautifulSoup
import warnings

# 1. Variável de busca
termo = "python"

# 2. URL com o parâmetro '&fulltext=1' para FORÇAR a lista de resultados
url = f"https://pt.wikipedia.org/w/index.php?search={termo}&fulltext=1"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

print(f"Pesquisando por: {termo}...\n")

# 3. Requisição e Parsing
resposta = requests.get(url, headers=headers)
sopa = BeautifulSoup(resposta.text, "html.parser")

# 4. Localizando os itens da lista
# Na página de busca completa, os resultados ficam em 'li' com a classe 'mw-search-result'
resultados = sopa.find_all("li", class_="mw-search-result", limit=3)

print("--- TOP 3 RESULTADOS DA BUSCA ---")

if resultados:
    for i, res in enumerate(resultados, 1):
        # Pegamos o link e o título dentro da div de cabeçalho do resultado
        link_tag = res.find("div", class_="mw-search-result-heading").find("a")
        titulo = link_tag.get("title")
        link_completo = "https://pt.wikipedia.org" + link_tag.get("href")
        
        # Pegamos o trecho do resumo
        resumo = res.find("div", class_="searchresult").text
        
        print(f"{i}. {titulo}")
        print(f"   Link: {link_completo}")
        print(f"   Resumo: {resumo[:100]}...\n")
else:
    print("Nenhum resultado em lista encontrado. O site pode ter redirecionado.")


Explicação Detalhada do Código

Vamos quebrar o script nas suas partes principais para você entender a lógica.

1. As Importações

Usamos três bibliotecas:

  • requests: Funciona como o nosso navegador programático. Ela envia o pedido para o site e traz o HTML de volta.

  • BeautifulSoup (de bs4): É a nossa “pinça”. Ela pega o HTML bruto e bagunçado e o transforma em um objeto organizado, onde podemos buscar por tags específicas (como <div>, <a>, <li>).

  • warnings: Usada apenas para esconder alertas de versões antigas do Python no Colab, deixando o resultado visualmente mais limpo.

2. Contornando Bloqueios com Headers

Esta é uma das partes mais importantes. Ao fazer requests.get(url), o Python se identifica como um script. Muitos sites bloqueiam isso imediatamente. Ao adicionarmos o dicionário headers com um User-Agent (que copia a identificação de um navegador Chrome real), estamos “disfarçando” nosso robô para que o site pense que é uma pessoa comum acessando.

3. A URL de Busca

Repare que na URL usamos {termo_da_busca} para inserir dinamicamente o que queremos pesquisar. O segredo é o parâmetro &fulltext=1 no final. Ele força a Wikipedia a sempre mostrar a página de lista de resultados, mesmo que o termo seja exato, garantindo que nosso loop funcione.

4. Extração com BeautifulSoup (find_all)

Após baixarmos o HTML, usamos o BeautifulSoup(resposta.text, "html.parser"). A linha sopa.find_all("li", class_="mw-search-result", limit=3) é crucial. Nós inspecionamos o HTML da Wikipedia e descobrimos que cada resultado de busca fica dentro de uma tag <li> (item de lista) com a classe CSS mw-search-result. O limit=3 garante que pegaremos apenas os primeiros.

5. O Loop de Organização

Usamos o for para “passear” por esses 3 blocos. Dentro de cada bloco, fazemos sub-buscas para encontrar o link exato (<a>), o título e o texto de resumo (div class="searchresult").


Assista ao Tutorial em Vídeo

Se você prefere ver o passo a passo e o código rodando ao vivo com diferentes termos de busca, confira o tutorial completo no meu canal do YouTube:

(Aproveite para se inscrever e deixar o seu like!)

Conclusão e Próximos Passos

O Web Scraping é uma habilidade valiosa para qualquer pessoa que trabalhe com dados. Este exemplo na Wikipedia é um ponto de partida seguro e didático.

Seu Desafio: Tente mudar o termo de busca no final do código e rode novamente. Você também pode tentar alterar o limit=3 para limit=5 para pegar mais resultados.

Share

You may also like...