Mini Web Scraper com Python – Coletando dados de um site simples usando requests e BeautifulSoup
Neste artigo, vamos criar um mini web scraper em Python, capaz de acessar uma página da web e extrair informações de forma automatizada usando duas bibliotecas poderosas:
requests
→ para fazer requisições HTTP e obter o conteúdo da página.BeautifulSoup
→ para analisar (parsear) o HTML e facilitar a coleta dos dados.
⚠️ Aviso importante: sempre verifique se o site permite scraping. Consulte o arquivo
robots.txt
(exemplo:https://example.com/robots.txt
) e leia os termos de uso.
Passo 1 – Instalando as bibliotecas necessárias
Antes de começar, instale as bibliotecas:
pip install requests beautifulsoup4
Passo 2 – Fazendo a primeira requisição com requests
A biblioteca requests
permite que o Python "visite" uma página da web e obtenha seu conteúdo.
import requests
url = "https://quotes.toscrape.com/" # site de exemplo para scraping
response = requests.get(url)
print("Status:", response.status_code) # 200 significa sucesso
print("HTML recebido:")
print(response.text[:500]) # mostra apenas os primeiros 500 caracteres
Se tudo deu certo, você verá o HTML da página. Esse é o material bruto que vamos processar.
Passo 3 – Analisando o HTML com BeautifulSoup
Agora que temos o código-fonte da página, precisamos navegar pelo HTML e extrair apenas as informações que queremos.
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, "html.parser")
# Exemplo: pegar o título da página
titulo = soup.title.text
print("Título da página:", titulo)
Passo 4 – Coletando dados específicos
O site de exemplo quotes.toscrape.com
possui várias frases (quotes) e autores. Vamos coletar todas as frases e seus respectivos autores:
quotes = soup.find_all("span", class_="text")
authors = soup.find_all("small", class_="author")
for i in range(len(quotes)):
print(f"{quotes[i].text} — {authors[i].text}")
👉 Esse código percorre todos os elementos <span class="text">
(frases) e <small class="author">
(autores), exibindo-os em pares.
Exemplo de saída:
“The world as we have created it is a process of our thinking.” — Albert Einstein
“It is our choices, Harry, that show what we truly are.” — J.K. Rowling
Passo 5 – Coletando links
Muitas vezes queremos navegar para páginas relacionadas. Vamos coletar os links de todas as tags:
links = soup.find_all("a")
for link in links:
print(link.get("href"))
Isso mostra todos os links encontrados na página.
Passo 6 – Salvando os dados em um arquivo CSV
Agora que já sabemos coletar os dados, vamos salvar em um arquivo CSV para análise posterior.
import csv
with open("quotes.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(["Frase", "Autor"])
for i in range(len(quotes)):
writer.writerow([quotes[i].text, authors[i].text])
Agora teremos um arquivo quotes.csv
com todas as frases e autores.
Código Completo – Mini Web Scraper
Aqui está a versão final do projeto:
import requests
from bs4 import BeautifulSoup
import csv
# URL de exemplo
url = "https://quotes.toscrape.com/"
response = requests.get(url)
# Verifica se a requisição foi bem-sucedida
if response.status_code == 200:
soup = BeautifulSoup(response.text, "html.parser")
quotes = soup.find_all("span", class_="text")
authors = soup.find_all("small", class_="author")
# Salvar em CSV
with open("quotes.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(["Frase", "Autor"])
for i in range(len(quotes)):
writer.writerow([quotes[i].text, authors[i].text])
print("✅ Dados salvos em quotes.csv")
else:
print("❌ Erro ao acessar a página:", response.status_code)
Exercícios para praticar
Coletar também as tags das frases (
<div class="tags">
).Fazer o scraper percorrer várias páginas do site (use
soup.find("li", class_="next")
para pegar o link da próxima).Criar uma função que receba uma URL e retorne os dados em lista de dicionários.
Melhorar o projeto para ler e gravar JSON além de CSV.
Conclusão
Com poucas linhas de código, conseguimos criar um mini web scraper em Python que acessa páginas da web, coleta informações e salva em arquivos para análise.
✔ Aprendemos a usar requests
para obter o HTML.
✔ Usamos BeautifulSoup
para navegar no conteúdo.
✔ Extraímos frases, autores e links.
✔ Salvamos os dados em um arquivo CSV.
Esse é apenas o primeiro passo no mundo do Web Scraping. A partir daqui, você pode evoluir para projetos mais avançados, como:
Scrapers que percorrem múltiplas páginas automaticamente.
Coleta de preços de produtos em e-commerces.
Integração com bancos de dados.
Scraping com Selenium para páginas dinâmicas (JavaScript).
Comentários
Postar um comentário