Você já passou pela frustração de comprar um eletrônico e, no dia seguinte, ver que o preço caiu drasticamente? Monitorar sites de e-commerce manualmente é uma tarefa cansativa e, muitas vezes, impossível de manter durante 24 horas por dia. Felizmente, com a programação, podemos automatizar esse processo. Neste guia, você aprenderá como criar um bot que avisa quando um produto baixa de preço utilizando Python, transformando seu computador em um assistente pessoal de compras incansável.
A automação de tarefas repetitivas é um dos maiores superpoderes que um desenvolvedor pode ter. Ao criar um monitor de preços, você não apenas economiza dinheiro, mas também pratica conceitos fundamentais como requisições HTTP, manipulação de dados e envio de notificações. Este projeto é uma excelente porta de entrada para quem está começando a aprender Python, pois une utilidade prática com um código relativamente simples e direto.
O que é Web Scraping e como ele ajuda a economizar?
O coração de um bot monitor de preços é a técnica chamada Web Scraping. Basicamente, o scraping consiste em fazer com que um script simule um acesso humano a um site, leia o conteúdo da página e extraia informações específicas, como o nome do produto e o valor atual. Em vez de você abrir o navegador e procurar o preço, o robô faz isso por você de forma programada.
Para o nosso projeto, utilizaremos o Python devido à sua vasta biblioteca de ferramentas voltadas para automação. Se você ainda não tem o ambiente configurado, é recomendável conferir o guia de instalação e configuração do VS Code no Windows para garantir que terá o editor de código pronto para trabalhar.
Ferramentas necessárias para o seu Bot
Para construir este projeto, precisaremos de algumas bibliotecas específicas que facilitam a comunicação com a web e a análise dos dados capturados. As principais são:
- Requests: Responsável por realizar a requisição ao site do produto (baixar o HTML da página).
- BeautifulSoup: Ferramenta que “entende” o HTML e permite buscar etiquetas específicas, como classes ou IDs que contêm o preço.
- Smtplib: Uma biblioteca nativa do Python usada para enviar e-mails automaticamente quando o preço atingir o seu alvo.
Caso você receba mensagens de erro ao tentar importar essas ferramentas, pode ser necessário verificar se o seu interpretador está configurado corretamente ou se há problemas de instalação. Erros como o ModuleNotFoundError são comuns e fáceis de resolver seguindo as práticas recomendadas da comunidade.
Configurando o Ambiente de Desenvolvimento
1. Instalando as Bibliotecas
Abra o seu terminal e execute o comando para instalar a biblioteca Requests em Python e o BeautifulSoup. Use o gerenciador de pacotes pip:
pip install requests beautifulsoup42. Identificando os Elementos do Site
Antes de escrever o código, você precisa ir ao site do produto que deseja monitorar (por exemplo, Amazon ou Mercado Livre). Clique com o botão direito sobre o preço e selecione “Inspecionar”. Você deve anotar o ID ou a Classe HTML que envolve o valor numérico. Este “endereço” será usado pelo bot para localizar o dado correto.
Criando a Lógica de Captura de Dados
Nesta etapa, vamos focar em fazer o Python acessar o site e “ler” o preço. É importante configurar um User-Agent. Esse cabeçalho serve para dizer ao site que você é um navegador comum, e não um robô mal-intencionado, o que evita bloqueios imediatos.
import requests
from bs4 import BeautifulSoup
def pegar_preco(url):
headers = {"User-Agent": "Seu User Agent Aqui"}
site = requests.get(url, headers=headers)
soup = BeautifulSoup(site.content, 'html.parser')
# Exemplo de seletor (isso muda de site para site)
preco = soup.find(id="priceblock_ourprice").get_text()
# Convertendo string de preço para número real (float)
preco_numerico = float(preco.replace('RPara lidar com a formatação monetária brasileira (que usa vírgulas), você precisará tratar as strings de texto. Aprender como usar f-strings para formatar números e moedas pode te ajudar a exibir o valor final de forma limpa no terminal durante os testes.
Configurando o Alerta de Preço Baixo
Agora que o bot sabe o preço, ele precisa decidir se deve ou não te avisar. Isso é feito através de uma estrutura condicional simples: se o preço coletado for menor que o seu preço desejado, o bot dispara uma ação. Para este tutorial, usaremos o envio de e-mail, mas você também pode optar por criar um bot para Telegram com Python para receber notificações no celular.
import smtplib
def enviar_email(link):
servidor = smtplib.SMTP('smtp.gmail.com', 587)
servidor.ehlo()
servidor.starttls()
servidor.login('[email protected]', 'suasenha')
assunto = 'O preco baixou!'
corpo = f'Confira o link: {link}'
msg = f'Subject: {assunto}\n\n{corpo}'
servidor.sendmail('[email protected]', '[email protected]', msg)
servidor.quit()Atenção: Para usar o Gmail como remetente, você precisará gerar uma “Senha de App” nas configurações de segurança da sua conta Google, pois o Google bloqueia o login direto por scripts por motivos de segurança.
Automatizando a Frequência de Verificação
O bot não será útil se você tiver que rodá-lo manualmente o tempo todo. Precisamos que ele verifique o preço periodicamente (por exemplo, a cada 1 hora). Usaremos um loop enquanto (while) e o módulo time do Python para gerenciar esses intervalos de espera.
import time
while True:
preco_atual = pegar_preco(URL_DO_PRODUTO)
if preco_atual <= 1500.00:
enviar_email(URL_DO_PRODUTO)
break # Para o bot após avisar
time.sleep(3600) # Espera 60 minutos antes de olhar de novoAo lidar com loops contínuos, é vital garantir que seu código não consuma recursos excessivos da CPU. Estudar sobre dicas de otimização para Python pode ajudar a manter seu script leve e eficiente, mesmo rodando por dias seguidos.
Considerações Éticas e Legais
Ao criar scrapers, é fundamental seguir as diretrizes do arquivo robots.txt do site alvo. Este arquivo dita o que os bots podem ou não acessar. Evite fazer requisições em intervalos muito curtos (como a cada segundo), pois isso pode sobrecarregar o servidor da loja e resultar no banimento do seu endereço IP. O respeito à política de privacidade e aos termos de uso de grandes portais, como os listados na World Wide Web Consortium (W3C), garante que sua automação seja ética.
Para projetos mais robustos e profissionais, considere usar frameworks como o Scrapy, que possui ferramentas avançadas para gerenciar cookies, sessões e fluxos de dados mais complexos.
Código Completo do Projeto
Aqui está o código unificado e funcional para o seu bot monitor de preços. Lembre-se de substituir os placeholders (espaços entre aspas) pelas suas informações reais e ajustar os seletores HTML conforme o site que você deseja monitorar.
import requests
from bs4 import BeautifulSoup
import smtplib
import time
# CONFIGURAÇÕES INICIAIS
URL_PRODUTO = "INSIRA_A_URL_DO_PRODUTO_AQUI"
PRECO_DESEJADO = 1200.00
MEU_EMAIL = "[email protected]"
SENHA_APP_EMAIL = "suasenhaespecifica" # Use Senha de App do Google
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
def verificar_preco():
headers = {"User-Agent": USER_AGENT}
try:
resposta = requests.get(URL_PRODUTO, headers=headers)
soup = BeautifulSoup(resposta.content, 'html.parser')
# O seletor abaixo (class ou id) DEVE ser ajustado para cada site
# Exemplo hipotético para uma loja:
titulo = soup.find(id="productTitle").get_text().strip()
preco_texto = soup.find(class_="a-offscreen").get_text()
# Limpeza do dado para conversão numérica
preco_limpo = preco_texto.replace('RPerguntas Frequentes
O bot funciona em qualquer site de vendas?
A lógica de programação é a mesma, mas os “seletores” (IDs e Classes) mudam em cada site. Você precisará ajustar o código para cada loja diferente que quiser monitorar.
Por que o programa dá erro de conexão as vezes?
Sites grandes podem ter proteções contra robôs. Se o bot fizer muitas requisições rápidas, seu IP pode ser bloqueado temporariamente. Use intervalos de tempo razoáveis.
Posso ser banido de uma loja por usar esse bot?
Dificilmente você será banido como comprador, mas o bot pode parar de funcionar se o site identificar tráfego automatizado abusivo. Sempre use com moderação.
Como descubro o meu User-Agent?
Basta digitar “What is my user agent” no Google e ele mostrará a string exata que o seu navegador está usando no momento.
O bot precisa estar com o computador ligado?
Sim, o script só roda enquanto seu computador estiver ligado e conectado à internet. Para rodar 24h sem interrupção, você pode hospedar o script em uma nuvem (VPS) ou usar um Raspberry Pi.
Posso usar o bot para monitorar vários produtos ao mesmo tempo?
Sim! Você pode criar uma lista em Python com várias URLs e usar um loop for para percorrer cada uma delas dentro do while True.
É seguro colocar minha senha de e-mail no código?
Não é recomendado colocar senhas reais. Use “Senhas de App” e, para maior segurança, utilize variáveis de ambiente para esconder suas credenciais.
O site mudou o layout e o bot parou de funcionar. E agora?
Isso é comum no Web Scraping. Quando o site muda o design, os IDs e Classes HTML mudam. Você apenas precisa abrir o site, inspecionar o novo elemento e atualizar o seletor no seu código.






