Como criar um Web Scraper de notícias e enviar para o Telegram

Publicado em: 16/04/2026
Tempo de leitura: 8 minutos

Você já sentiu a necessidade de acompanhar notícias de um site específico sem ter que abrir o navegador a cada cinco minutos? Criar um Web Scraper de notícias e enviar para o Telegram é uma das formas mais eficientes de colocar a Python para automação em prática. Neste guia completo, vamos construir do zero um robô capaz de ler as principais manchetes de um portal e enviar alertas diretamente para o seu celular. Essa técnica é fundamental para profissionais que precisam de monitoramento em tempo real ou entusiastas que desejam aprender como as máquinas interpretam a web.

O que é Web Scraping e por que usar Python?

O Web Scraping, ou raspagem de dados, é o processo de extrair informações de sites de forma automatizada. Em vez de copiar e colar manualmente, criamos um script que simula a navegação humana e coleta apenas o que nos interessa, como títulos, links ou preços. Python se tornou a linguagem favorita para essa tarefa devido à sua sintaxe limpa e ao ecossistema rico de bibliotecas em Python especializadas em processamento de HTML.

Links importantes para aprofundamento externo:

  • Consulte a documentação oficial da BeautifulSoup para entender a árvore de nós do HTML.
  • Aprenda mais sobre o protocolo HTTP na MDN Web Docs.

Configurando o Ambiente de Desenvolvimento

Antes de escrevermos a primeira linha de código, precisamos preparar o terreno. É altamente recomendável que você utilize um ambiente virtual venv no Python para manter as dependências do projeto organizadas e evitar conflitos com outros scripts no seu sistema.

Abra o seu terminal e execute os seguintes comandos para instalar as ferramentas necessárias:

Bash
pip install requests
pip install beautifulsoup4
pip install python-dotenv

A biblioteca requests é responsável por fazer a requisição ao site, enquanto a beautifulsoup4 faz o “parse” (análise) do conteúdo HTML para que possamos encontrar as tags específicas. Já a python-dotenv ajuda a gerenciar chaves de API com segurança, evitando que você exponha seu token do Telegram publicamente.

Criando o Bot no Telegram

Para enviar as notícias, você precisa de um “mensageiro”. O Telegram facilita muito esse processo através do BotFather. Siga estes passos:

  1. Abra o Telegram e procure por @BotFather.
  2. Digite o comando /newbot e siga as instruções para dar um nome e um username ao seu robô.
  3. Ao final, você receberá um Token de API. Guarde este código, ele é a chave de acesso do seu bot.
  4. Inicie uma conversa com seu novo bot e envie qualquer mensagem.
  5. Para descobrir seu Chat ID (necessário para o script saber para quem enviar), acesse a URL https://api.telegram.org/bot<SEU_TOKEN>/getUpdates no seu navegador e procure pelo campo “id” dentro do bloco “chat”.

Se você tiver dificuldades nessa etapa, recomendo ler nosso guia sobre como criar um bot para telegram com python para detalhes visuais.

Estruturando o Raspador de Notícias

Agora que temos o bot pronto, vamos focar na extração dos dados. Neste exemplo, vamos simular a captura de um portal de notícias genérico. O segredo do Web Scraping está em identificar o padrão das tags HTML do site alvo. Na maioria das vezes, as manchetes estão dentro de tags <h2> ou <a> com uma classe específica.

Fazendo a Requisição HTTP

O primeiro passo é obter o código-fonte da página. Utilizamos a biblioteca requests para isso. É importante sempre verificar o status da conexão para evitar erros inesperados.

Python
import requests
from bs4 import BeautifulSoup

url = "https://exemplo-noticias.com"
resposta = requests.get(url)

if resposta.status_code == 200:
    print("Conexão bem-sucedida!")
    html = resposta.text
else:
    print("Erro ao acessar o site.")

Limpando e Filtrando os Dados

Com o HTML em mãos, usamos a BeautifulSoup para encontrar os elementos. Vamos supor que as notícias estejam em tags <h3> com a classe “titulo-noticia”. Se você encontrar problemas de visualização de caracteres, verifique se precisa resolver erros codificacao utf-8 python no seu terminal.

Python
soup = BeautifulSoup(html, 'html.parser')
noticias = soup.find_all('h3', class_='titulo-noticia')

lista_mensagens = []
for noticia in noticias:
    titulo = noticia.get_text().strip()
    link = noticia.find('a')['href']
    lista_mensagens.append(f"{titulo}\nLeia mais: {link}")

Conectando o Scraper ao Telegram

Com a lista de notícias pronta, precisamos enviá-la. A API do Telegram funciona através de requisições web simples. Para uma melhor organização de código, utilize funções em python para separar a lógica de envio da lógica de raspagem.

Python
def enviar_telegram(mensagem):
    token = "SEU_TOKEN_AQUI"
    chat_id = "SEU_CHAT_ID_AQUI"
    api_url = f"https://api.telegram.org/bot{token}/sendMessage"
    
    dados = {
        "chat_id": chat_id,
        "text": mensagem,
        "parse_mode": "Markdown"
    }
    
    return requests.post(api_url, data=dados)

Automatizando o Processo

Um rastreador de notícias só é útil se rodar sozinho. Você pode configurar seu script para rodar a cada hora. Para isso, você pode usar um while em python com um temporizador ou agendar uma tarefa no Windows/Linux. Para quem busca maior estabilidade, colocar o rodar script python docker é a solução profissional para garantir que o bot nunca pare.

Código Completo do Projeto

Abaixo está o código unificado. Lembre-se de substituir os placeholders pelo seu Token e Chat ID reais, e ajustar as tags HTML de acordo com o portal que você deseja monitorar.

Python
import requests
from bs4 import BeautifulSoup
import time

# Configurações do Telegram
TOKEN = "SEU_TOKEN_AQUI"
CHAT_ID = "SEU_CHAT_ID_AQUI"

def extrair_noticias(url_alvo):
    """Extrai manchetes de um site de notícias."""
    try:
        headers = {'User-Agent': 'Mozilla/5.0'}
        resposta = requests.get(url_alvo, headers=headers)
        soup = BeautifulSoup(resposta.content, 'html.parser')
        
        # Ajuste estas tags conforme o site escolhido
        postagens = soup.find_all('h2', limit=5)
        
        resultados = []
        for post in postagens:
            texto = post.get_text().strip()
            link = post.find('a')['href'] if post.find('a') else "Link não disponível"
            resultados.append(f"<b>Notícia:</b> {texto}\n<a href="{link}">Clique aqui para ler</a>")
            
        return resultados
    except Exception as e:
        print(f"Erro na extração: {e}")
        return []

def enviar_para_telegram(mensagem):
    """Envia uma mensagem formatada para o bot do Telegram."""
    url_api = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
    payload = {
        "chat_id": CHAT_ID,
        "text": mensagem,
        "parse_mode": "HTML"
    }
    requests.post(url_api, data=payload)

def executar_bot():
    """Loop principal de execução."""
    url = "https://g1.globo.com" # Exemplo de site
    print("Iniciando monitoramento...")
    
    noticias = extrair_noticias(url)
    
    if noticias:
        for noticia in noticias:
            enviar_para_telegram(noticia)
            time.sleep(2) # Evita spam e bloqueio da API
        print("Notícias enviadas com sucesso!")
    else:
        print("Nenhuma notícia encontrada.")

if __name__ == "__main__":
    executar_bot()

Considerações Éticas e Legais

Ao criar um Web Scraper de notícias e enviar para o Telegram, é vital respeitar o arquivo robots.txt do site original. Esse arquivo indica quais partes do site podem ou não ser acessadas por robôs. Além disso, não faça requisições em intervalos muito curtos (milissegundos), pois isso pode sobrecarregar o servidor do portal e resultar no banimento do seu IP. O uso de cabeçalhos (headers) que simulam um navegador real ajuda a evitar bloqueios de segurança.

Perguntas Frequentes

Meu script retorna uma lista vazia, o que fazer?

Isso geralmente acontece porque as classes ou IDs das tags HTML mudaram ou o site usa carregamento dinâmico via JavaScript. Verifique o código-fonte no navegador (F12) e atualize os seletores no seu código.

É possível enviar imagens junto com a notícia?

Sim! A API do Telegram possui o endpoint /sendPhoto. Você precisaria capturar a URL da imagem com o Scraper e enviá-la usando esse método específico da API.

O Telegram pode banir meu bot por spam?

Se você enviar centenas de mensagens por minuto, sim. O ideal é manter um intervalo de pelo menos 1 a 2 segundos entre cada mensagem e enviar apenas as atualizações mais importantes.

Posso rodar esse script na nuvem de graça?

Sim, plataformas como Google Cloud (nível gratuito), Heroku ou GitHub Actions permitem a execução agendada de scripts Python sem custos iniciais elevados.

Como filtrar apenas notícias com palavras-chave específicas?

Dentro do seu loop for, você pode adicionar uma estrutura if-elif-e-else no python para verificar se um termo (como “futebol” ou “economia”) está presente no título antes de enviar para o Telegram.

Como evitar o envio de notícias repetidas?

O ideal é salvar o link das notícias já enviadas em um banco de dados simples como o SQLite ou um arquivo TXT. Antes de enviar, o script verifica se aquele link já existe na lista de “enviados”.

O que fazer se o site exigir login?

Para sites com login, você pode precisar usar a biblioteca Selenium em vez de BeautifulSoup, pois ela consegue interagir com formulários e clicar em botões como um usuário real.

A biblioteca Requests é a melhor para isso?

Para sites simples, sim. Para projetos que exigem alta performance e milhares de requisições simultâneas, você deve considerar o uso de asyncio no python para processamento assíncrono.

Agora que você domina as bases da extração de dados e integração com o Telegram, o próximo passo é expandir este projeto. Você poderia, por exemplo, integrar uma análise de sentimento nas manchetes ou criar um banco de dados histórico para acompanhar tendências de assuntos ao longo do mês.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Automação e Scripts
    Foto do Leandro Hirt

    Como integrar o ChatGPT ao seu código Python: Guia Prático

    A inteligência artificial transformou a maneira como desenvolvemos software, e aprender como integrar o ChatGPT ao seu código Python é

    Ler mais

    Tempo de leitura: 10 minutos
    15/04/2026
    Automação e Scripts
    Foto do Leandro Hirt

    Como organizar os arquivos do seu PC com Python em 5 minutos

    Você já sentiu aquela frustração de abrir a pasta de downloads e encontrar centenas de arquivos misturados? Documentos PDF perdidos

    Ler mais

    Tempo de leitura: 8 minutos
    14/04/2026
    Automação e Scripts
    Foto do Leandro Hirt

    Como gerar um executável Android .apk com Python

    Transformar um script escrito em Python em um aplicativo funcional para dispositivos móveis é um marco importante para qualquer desenvolvedor.

    Ler mais

    Tempo de leitura: 10 minutos
    04/04/2026
    Automação e Scripts
    Foto do Leandro Hirt

    Como Fazer o Seu Script Python Iniciar no Windows

    Aprender como fazer script Python iniciar no Windows é um passo fundamental para qualquer pessoa que deseja levar a sério

    Ler mais

    Tempo de leitura: 9 minutos
    29/03/2026
    Automação e Scripts
    Foto do Leandro Hirt

    Como acessar e editar Google Sheets com Python em minutos

    Integrar planilhas do Google com scripts automatizados é uma das habilidades mais valiosas para quem deseja otimizar processos de negócios

    Ler mais

    Tempo de leitura: 9 minutos
    06/03/2026
    Automação e Scripts
    Foto do Leandro Hirt

    Como extrair texto de PDFs com Python em minutos

    Você já se deparou com a necessidade de copiar informações de centenas de arquivos, mas percebeu que fazer isso manualmente

    Ler mais

    Tempo de leitura: 11 minutos
    02/03/2026