Найти в Дзене
Pythonic

Парсер новостей с автоматической отправкой в Telegram

pip install requests beautifulsoup4 python-telegram-bot Создадим файл news_parser.py: import requests
from bs4 import BeautifulSoup
def parse_habr_news(keywords):
url = "https://habr.com/ru/flows/develop/articles/"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
articles = []
for article in soup.find_all("article"):
title = article.find("h2").text.strip()
link = article.find_all('a')[2]["href"]
if any(word.lower() in title.lower() for word in keywords):
articles.append({"title": title, "link": link})
return articles
if __name__ == "__main__":
keywords = ["Python", "ИИ", "GPT"]
news = parse_habr_news(keywords)
for item in news:
print(f"{item['title']} \n https://habr.com{item['link']}\n") Как это работает? Добавим код для отправки в файл telegram_bot.py: import telebot
def send_to_telegram(token, chat_id, message):
bot = telebot.TeleBot(token=token)
bot
Оглавление

Что сделаем:

  1. Соберём заголовки новостей с сайта (например, Хабра или BBC).
  2. Отфильтруем их по ключевым словам (например, "Python", "ИИ").
  3. Отправим результаты в Telegram-канал или чат.

1. Установка зависимостей

pip install requests beautifulsoup4 python-telegram-bot

  • requests — для HTTP-запросов.
  • beautifulsoup4 — для парсинга HTML.
  • telebot — для работы с Telegram API.

2. Парсим новости

Создадим файл news_parser.py:

import requests
from bs4 import BeautifulSoup


def parse_habr_news(keywords):
url = "https://habr.com/ru/flows/develop/articles/"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

articles = []
for article in soup.find_all("article"):
title = article.find("h2").text.strip()
link = article.find_all('a')[2]["href"]

if any(word.lower() in title.lower() for word in keywords):
articles.append({"title": title, "link": link})

return articles


if __name__ == "__main__":
keywords = ["Python", "ИИ", "GPT"]
news = parse_habr_news(keywords)
for item in news:
print(f"{item['title']} \n https://habr.com{item['link']}\n")
-2

Как это работает?

  • Загружаем страницу с Habr.
  • Ищем все статьи (<article>).
  • Фильтруем по ключевым словам.

3. Отправка в Telegram

Добавим код для отправки в файл telegram_bot.py:

import telebot

def send_to_telegram(token, chat_id, message):
bot = telebot.TeleBot(token=token)

bot.send_message(chat_id=chat_id, text=message)

if __name__ == "__main__":
# Получите токен у @BotFather и ID чата
TOKEN = "ВАШ_TELEGRAM_BOT_TOKEN"
CHAT_ID = "ВАШ_CHAT_ID"

test_message = "Привет, это тест из Python!"
send_to_telegram(TOKEN, CHAT_ID, test_message)
Результат выполнения
Результат выполнения

Как получить токен и chat_id?

1. Создайте бота через [@BotFather](https://t.me/BotFather).

2. Узнайте chat_id, отправив сообщение боту [@userinfobot](https://t.me/userinfobot).

создаём нового бота
создаём нового бота
Копируем API
Копируем API

4. Объединяем всё

Добавим в main.py логику: парсим новости → отправляем в Telegram.

from news_parser import parse_habr_news
from telegram_bot import send_to_telegram

def main():
keywords = ["Python", "ИИ", "GPT"]
news = parse_habr_news(keywords)

TOKEN = "ВАШ_TELEGRAM_BOT_TOKEN"
CHAT_ID = "ВАШ_CHAT_ID"

for item in news:
message = f"{item['title']} \n https://habr.com{item['link']}"
send_to_telegram(TOKEN, CHAT_ID, message)

if __name__ == "__main__":
main()

5. Запускаем!

python main.py
Если всё настроено правильно, бот начнёт присылать новости в Telegram.
Если всё настроено правильно, бот начнёт присылать новости в Telegram.

Итог

Мы написали проект, который:

  • Использует requests и BeautifulSoup для парсинга.
  • Применяет списковые включения и генераторы.
  • Интегрируется с Telegram через API.

Код доступен на GitHub(https://github.com/Pythonic451/news-parser-bot)

Если понравилось — поставьте лайк! 😊