import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import PyPDF2
import re
from io import BytesIO
import telebot
# Создаем объект бота с использованием токена
bot = telebot.TeleBot('---') # Замените 'YOUR_BOT_TOKEN' на ваш токен
telebot.apihelper.proxy = {'https': 'https://....130.210.13:..00'}
# Функция-обработчик событий при получении сообщений
@bot.message_handler(func=lambda message: True)
def handle_message(message):
# URL страницы, с которой будем скачивать HTML-документ
url = 'http://alcollege.ru/resursy/raspisanie-zanyatij'
# Отправляем GET-запрос на URL и получаем ответ
response = requests.get(url)
# Проверяем, что ответ успешный (код 200)
if response.status_code == 200:
# Создаем объект BeautifulSoup для парсинга HTML
soup = BeautifulSoup(response.content, 'html.parser')
# Список дней недели, за исключением "субботы"
days_of_week = ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота']
# Находим все теги 'a' с атрибутом 'href' и извлекаем значения атрибутов
for link in soup.find_all('a', href=True):
file_url = urljoin(url, link['href']) # Получаем абсолютный URL из относительного
# Проверяем, что ссылка ведет на PDF-файл и содержит название дня недели (за исключением "субботы")
if file_url.endswith('.pdf') and any(day in link.get_text().lower() for day in days_of_week):
# Отправляем GET-запрос на URL PDF-файла и получаем его содержимое
pdf_response = requests.get(file_url)
if pdf_response.status_code == 200:
# Создаем объект PyPDF2.PdfReader для чтения PDF-файла
pdf_reader = PyPDF2.PdfReader(BytesIO(pdf_response.content))
output = False
for page in pdf_reader.pages:
text = page.extract_text()
if text:
# Ищем строки, содержащие значение "1031" в первом столбце с помощью регулярного выражения
lines = text.split("\n") # Разбиваем текст на строки
for line in lines:
if output:
# Отправляем результат в бота
bot.send_message(message.chat.id, line)
else:
match = re.match(r'^1031\s+(.*)', line)
if match:
# Отправляем результат в бота
bot.send_message(message.chat.id, 'Найдено в файле {}:'.format(file_url))
bot.send_message(message.chat.id, line)
output = True
continue
if line.startswith('1041'):
output = False
else:
bot.send_message
bot.send_message(message.chat.id, 'Не удалось загрузить PDF-файл: {}'.format(file_url))
bot.send_message(message.chat.id, 'Не удалось загрузить страницу с расписанием: {}'.format(url))
bot.polling(none_stop=True, interval=0)