В данной статье мы рассмотрим скрипт на языке программирования Python, который позволяет получать новые статьи с сайта и отправлять их в определенный канал в Telegram.
Наверняка многие пользователи Telegram сталкивались с тем, что хотели бы получать новые статьи или уведомления о новых постах из любимых блогов или сайтов прямо в мессенджере. Создание своего собственного Telegram-бота может помочь автоматизировать этот процесс и получать уведомления о новых статьях на любом сайте, не выходя из Telegram.
Для начала работы с Telegram API вам необходимо создать бота и получить его токен. Для этого можно воспользоваться инструкцией на сайте Telegram или использовать специальный сервис BotFather. Вам также понадобится ID вашего канала, в который будут отправляться новые статьи.
Прежде всего, необходимо установить необходимые библиотеки для Python — requests и BeautifulSoup. Для этого можно использовать следующую команду:
pip install requests beautifulsoup4
Далее, можно начать создание скрипта на Python.
Первым шагом является импорт необходимых библиотек:
import requests
from bs4 import BeautifulSoup
import time
Затем нужно задать токен вашего бота в Telegram, ID вашего канала и путь к файлу, в котором будут храниться опубликованные статьи:
BOT_TOKEN = 'ваш_токен_бота'
CHANNEL_ID = 'id_вашего_канала'
FILE_NAME = 'published_posts.txt'
Далее определим функцию, которая будет отправлять сообщения в канал:
def send_message(message):
url = f'https://api.telegram.org/bot{BOT_TOKEN}/sendMessage'
data = {'chat_id': CHANNEL_ID, 'text': message, "parse_mode": "HTML"}
response = requests.post(url, data=data)
return response.json()
Теперь определим функцию, которая будет проверять, была ли уже опубликована статья с указанным URL:
def is_post_published(url):
with open(FILE_NAME, 'r') as f:
published_posts = f.readlines()
if url + '\n' in published_posts:
return True
else:
return False
Далее определим функцию, которая будет добавлять URL статьи в файл опубликованных статей:
def add_to_published(url):
with open(FILE_NAME, 'a') as f:
f.write(url + '\n')
Теперь определим функцию, которая будет получать новые статьи и отправлять их в канал:
def check_for_new_posts():
# Получаем HTML-страницу сайта
url = 'https://site.name/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# Получаем все статьи на странице
posts = soup.find_all('div', class_='card-wrapper')
# Перебираем статьи
for post in posts:
# Получаем заголовок и URL статьи
header = post.find('h2', class_='entry-title').text.strip()
short_description = post.find('div', class_='entry-excerpt').text.strip()
url = post.find('a')['href']
# Проверяем, была ли статья уже опубликована
if not is_post_published(url):
# Если статья новая, отправляем ее в канал
message = f'<b>{header}</b>\n \n{short_description}\n \n<a href="{url}">Читать полностью</a>'
send_message(message)
# Добавляем URL статьи в файл опубликованных статей
add_to_published(url)
Бесконечный цикл, который проверяет наличие новых статей каждые 5 минут
while True:
check_for_new_posts()
time.sleep(300)
После запуска скрипта бот будет проверять сайт каждые 5 минут на наличие новых статей. Если найдены новые статьи, бот опубликует их в канале, указанном в переменной CHANNEL_ID.
Этот скрипт может быть усовершенствован различными способами. Например, можно добавить фильтры для статей, чтобы бот публиковал только те статьи, которые относятся к определенным темам. Можно также использовать другие методы получения статей, например, парсить RSS-ленты.
В целом, создание бота в Telegram может быть очень полезным для тех, кто хочет быстро и удобно получать информацию из различных источников. С помощью Telegram ботов можно также автоматизировать различные задачи, которые раньше приходилось выполнять вручную.