Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 09.03.2016
Сообщений: 6

Написание телеграм бота с уведомлениями о результатах ЕГЭ

24.06.2016, 15:44. Показов 4909. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Хочу написать телеграм бота, который будет уведомлять о появлении результатов ЕГЭ

Что требуется:
Есть сайт - http://uledu.ru на нем выкладываются результаты ЕГЭ для Ульяновской области, при выкладывании появляется новость на главной странице.
При появлении новой новости бот должен отправлять уведомление пользователю.

Как сказал мне выпускник, написавший такого же бота, но для результатов по СПб, требуется парсить сайт и при появлении новых новостей отправлять уведомление. Я до этого с парсингом и питоном(кроме простых программ) дел вообще не имел. Посмотрел пару уроков, написал вот такой вот код для парсинга:
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python3
import filecmp
import urllib.request
from bs4 import BeautifulSoup
 
def get_html(url):
    response = urllib.request.urlopen(url)
    return response.read()
 
def parse(html):
    soup = BeautifulSoup(html, "lxml")
    table = soup.find('table', class_="blog")
    rows = table.find_all('tr')[5:]
    results = []
    for row in table.find_all('tr')[5:]:
        cols = row.find_all('td')
        results.append({
            'title':cols[0].text
        })
 
 
def main():
    parse(get_html('http://www.uledu.ru/index.php'))
 
 
if __name__ == '__main__':
    main()


Этот код получает вот такие вот данные (сделать все красиво мне не удалось), немного их сократил, так как сбщ получилось бы слишком длинное:

Кликните здесь для просмотра всего текста

{'title': '\n\t\t\t\t\tРезультаты рассмотрения апелляций участников ЕГЭ по математике профильного уровня (06.06.2016)\t\t\t'}
{'title': '\n\t\t24.06.2016 07:40\t'}
{'title': '\nОпубликованы на сайте и высланы в муниципальные органы управления образованием результаты после рассмотрения апелляций участников ЕГЭ по математике профильного уровня (06.06.2016). С обновленными результатами апеллянты могут ознакомиться в разделе Результаты.'}
{'title': '\n\t\t\t\t\tРезультаты ЕГЭ по обществознанию от 08.06.2016\t\t\t'}
{'title': '\n\t\t21.06.2016 12:28\t'}
{'title': '\nНа сайте опубликованы результаты Единого государственного экзамена (ЕГЭ) по обществознанию от 08.06.2016. С персональными результатами участники экзамена могут ознакомиться в разделе Результаты.\nУстановленное Рособрнадзором минимальное количество баллов по стобалльной шкале по обществознанию - 42 балла.\nАпелляции на результаты ЕГЭ\xa0по обществознанию от 08.06.2016 принимаются 22 и 23 июня с 9-00 до 16-00 в ОГАУ "Центр обработки информации и мониторинга в образовании" по адресу: г. Ульяновск, ул. Розы Люксембург, 48 (при себе иметь паспорт), по факсу (8422) 27-78-01 и по электронной почте \n \n <!--\n var prefix = \'mailto:\';\n var suffix = \'\';\n var attribs = \'\';\n var path = \'hr\' + \'ef\' + \'=\';\n var addy69255 = \'admin\' + \'@\';\n addy69255 = addy69255 + \'uledu\' + \'.\' + \'ru\';\n document.write( \'<a \' + path + \'\\\'\' + prefix + addy69255 + suffix + \'\\\'\' + attribs + \'>\' );\n document.write( addy69255 );\n document.write( \'<\\/a>\' );\n //-->\n \n <!--\n document.write( \'<span style=\\\'display: none;\\\'>\' );\n //-->\n Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript\n \n <!--\n document.write( \'</\' );\n document.write( \'span>\' );\n //-->\n . Форма для подачи апелляции 1-АП: в формате pdf, в формате xls. Телефон (8422) 27-78-03.\nКонфликтная комиссия будет рассматривать апелляции по указанным предметам 24 июня в 14:00 по адресу г. Ульяновск, ул. Розы Люксембург, 48 (при себе иметь паспорт).\nКраткая статистика по Ульяновской области:\nОбществознание (ЕГЭ) (08.06.2016). Участников - 3745, из них 600 (16.02%) получили балл ниже установленного минимума (42). Средний балл - 53.87, минимальный балл - 3 (1 участник), максимальный - 98 (2 участника). В экзамене принимали участие учащиеся из 295 образовательных учреждений в 41 ППЭ.\n'}
{'title': '\n\t\t\t\t\tРезультаты рассмотрения апелляций участников ЕГЭ по русскому языку (30.05.2016), математике базового уровня (02.06.2016), и ГВЭ-11 по русскому языку (30.05.2016) \t\t\t'}
{'title': '\n\t\t21.06.2016 10:29\t'}
{'title': '\nОпубликованы на сайте и высланы в муниципальные органы управления образованием результаты после рассмотрения апелляций участников:\n- ЕГЭ по русскому языку (30.05.2016),\n- ГВЭ-11 по русскому языку (30.05.2016).\nСреди апелляций ЕГЭ по математике базового уровня (02.06.2016) удовлетворенных нет. Апелляция ЕГЭ по русскому языку Сизовой Е.А. отправлена на федеральную перепроверку, результат ее рассмотрения будет позже.'}
{'title': '\n\t\t\t\t\tРезультаты ЕГЭ по математике профильного уровня от 06.06.2016\t\t\t'}
{'title': '\n\t\t20.06.2016 12:24\t'}
{'title': '\nНа сайте опубликованы результаты Единого государственного экзамена (ЕГЭ) по\xa0математике профильного уровня от 06.06.2016. С персональными результатами участники экзамена могут ознакомиться в разделе Результаты.\nУстановленное Рособрнадзором минимальное количество баллов по стобалльной шкале, подтверждающее освоение образовательных программ среднего общего образования по математике профильного уровня - 27 баллов.\nАпелляции на результаты ЕГЭ\xa0по\xa0математике профильного уровня от 06.06.2016 принимаются 21 и 22 июня с 9-00 до 16-00 в ОГАУ "Центр обработки информации и мониторинга в образовании" по адресу: г. Ульяновск, ул. Розы Люксембург, 48 (при себе иметь паспорт), по факсу (8422) 27-78-01 и по электронной почте \n \n <!--\n var prefix = \'mailto:\';\n var suffix = \'\';\n var attribs = \'\';\n var path = \'hr\' + \'ef\' + \'=\';\n var addy64071 = \'admin\' + \'@\';\n addy64071 = addy64071 + \'uledu\' + \'.\' + \'ru\';\n document.write( \'<a \' + path + \'\\\'\' + prefix + addy64071 + suffix + \'\\\'\' + attribs + \'>\' );\n document.write( addy64071 );\n document.write( \'<\\/a>\' );\n //-->\n \n <!--\n document.write( \'<span style=\\\'display: none;\\\'>\' );\n //-->\n Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript\n \n <!--\n document.write( \'</\' );\n document.write( \'span>\' );\n //-->\n . Форма для подачи апелляции 1-АП: в формате pdf, в формате xls. Телефон (8422) 27-78-03.\nКонфликтная комиссия будет рассматривать апелляции по указанным предметам 23 июня в 14:00 по адресу г. Ульяновск, ул. Розы Люксембург, 48 (при себе иметь паспорт).\nКраткая статистика по Ульяновской области:\nМатематика профильная (ЕГЭ) (06.06.2016). Участников - 4032, из них 433 (10.74%) получили балл ниже установленного минимума (27). Средний балл - 47.39, минимальный балл - 0 (3 участника), максимальный - 100 (2 участника). В экзамене принимали участие учащиеся из 290 образовательных учреждений в 38 ППЭ.\n '}
{'title': '\n\t\tОбновлено 20.06.2016 12:34\t'}
{'title': '\n\t\t\t\t\tРезультаты ОГЭ и ГВЭ по русскому языку и математике от 17.06.2016\t\t\t'}
{'title': '\n\t\t18.06.2016 12:22\t'}
{'title': '\nОпубликованы на сайте и высланы в муниципальные управления образования результаты Основного государственного экзамена (ОГЭ) и Государственного выпускного экзамена (ГВЭ) по русскому языку и математике от 17.06.2016. С персональными результатами участники экзамена могут ознакомиться в разделе Результаты.\nАпелляция на результаты ОГЭ и ГВЭ по русскому языку и математике от 17.06.2016 принимаются 20 и 21 июня с 9-00 до 16-00 в ОГАУ "Центр информационных технологий" по адресу: г. Ульяновск, ул. Розы Люксембург, 48 (при себе иметь паспорт), по факсу (8422) 27-78-01 и по электронной почте \n \n <!--\n var prefix = \'mailto:\';\n var suffix = \'\';\n var attribs = \'\';\n var path = \'hr\' + \'ef\' + \'=\';\n var addy94035 = \'admin\' + \'@\';\n addy94035 = addy94035 + \'uledu\' + \'.\' + \'ru\';\n document.write( \'<a \' + path + \'\\\'\' + prefix + addy94035 + suffix + \'\\\'\' + attribs + \'>\' );\n document.write( addy94035 );\n document.write( \'<\\/a>\' );\n //-->\n \n <!--\n document.write( \'<span style=\\\'display: none;\\\'>\' );\n //-->\n Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript\n \n <!--\n document.write( \'</\' );\n document.write( \'span>\' );\n //-->\n . Форма для подачи апелляции 1-АП: в формате pdf, в формате xls. Телефон (8422) 27-78-03.\nКонфликтная комиссия будет рассматривать апелляции 22 июня с 14:00 по адресу г. Ульяновск, ул. Розы Люксембург, 48 (при себе иметь паспорт).'}
{'title': '\n\t\tОбновлено 18.06.2016 12:25\t'}
{'title': '\n\t\t\t\t\tРезультаты ОГЭ и ГВЭ от 15.06.2016\t\t\t'}
{'title': '\n\t\t18.06.2016 08:10\t'}
{'title': '\nОпубликованы на сайте и высланы в муниципальные управления образования результаты Основного государственного экзамена (ОГЭ) и Государственного выпускного экзамена (ГВЭ) по физике, химии, информатике, биологии, истории, географии, обществознанию, литературе от 15.06.2015. С персональными результатами участники экзамена могут ознакомиться в разделе Результаты.\nАпелляция на результаты ОГЭ и ГВЭ по по физике, химии, информатике, биологии, истории, географии, обществознанию, литературе от 15.06.2015 принимаются 20 и 21 июня с 9-00 до 16-00 в ОГАУ "Центр информационных технологий" по адресу: г. Ульяновск, ул. Розы Люксембург, 48 (при себе иметь паспорт), по факсу (8422) 27-78-01 и по электронной почте \n \n <!--\n var prefix = \'mailto:\';\n var suffix = \'\';\n var attribs = \'\';\n var path = \'hr\' + \'ef\' + \'=\';\n var addy67785 = \'admin\' + \'@\';\n addy67785 = addy67785 + \'uledu\' + \'.\' + \'ru\';\n document.write( \'<a \' + path + \'\\\'\' + prefix + addy67785 + suffix + \'\\\'\' + attribs + \'>\' );\n document.write( addy67785 );\n document.write( \'<\\/a>\' );\n //-->\n \n <!--\n document.write( \'<span style=\\\'display: none;\\\'>\' );\n //-->\n Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript\n \n <!--\n document.write( \'</\' );\n document.write( \'span>\' );\n //-->\n . Форма для подачи апелляции 1-АП: в формате pdf, в формате xls. Телефон (8422) 27-78-03.\nКонфликтная комиссия будет рассматривать апелляции 22 июня с 14:00 по адресу г. Ульяновск, ул. Розы Люксембург, 48 (при себе иметь паспорт).'}
{'title': '\n\t\tОбновлено 18.06.2016 12:25\t'}
{'title': '\n\t\t\t\t\tРезультаты ГВЭ-11 по математике от 02.06.2016\t\t\t'}
{'title': '\n\t\t16.06.2016 07:44\t'}
{'title': '\nНа сайте опубликованы результаты Государственного выпускного экзамена (ГВЭ) по математике от 02.06.2016. С персональными результатами участники экзамена могут ознакомиться в разделе Результаты.\nАпелляции на результаты ГВЭ-11 по математике от 02.06.2016 принимаются 16 и 17 июня с 9-00 до 16-00 в ОГАУ "Центр обработки информации и мониторинга в образовании" по адресу: г. Ульяновск, ул. Розы Люксембург, 48 (при себе иметь паспорт), по факсу (8422) 27-78-01 и по электронной почте \n \n <!--\n var prefix = \'mailto:\';\n var suffix = \'\';\n var attribs = \'\';\n var path = \'hr\' + \'ef\' + \'=\';\n var addy80646 = \'admin\' + \'@\';\n addy80646 = addy80646 + \'uledu\' + \'.\' + \'ru\';\n document.write( \'<a \' + path + \'\\\'\' + prefix + addy80646 + suffix + \'\\\'\' + attribs + \'>\' );\n document.write( addy80646 );\n document.write( \'<\\/a>\' );\n //-->\n \n <!--\n document.write( \'<span style=\\\'display: none;\\\'>\' );\n //-->\n Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript\n \n <!--\n document.write( \'</\' );\n document.write( \'span>\' );\n //-->\n . Форма для подачи апелляции 1-АП: в формате pdf, в формате xls. Телефон (8422) 27-78-03.\nКонфликтная комиссия будет рассматривать апелляции по указанным предметам 17 июня в 16:00 по адресу г. Ульяновск, ул. Розы Люксембург, 48 (при себе иметь паспорт).'}
{'title': '\n\t\t\t\t\tУдовлетворенные апелляции участников ОГЭ по математике (31.05.2016) и русскому языку (03.06.2016)\t\t\t'}
{'title': '\n\t\t15.06.2016 17:27\t'}
{'title': '\nОпубликованы на сайте и высланы в муниципальные управления образования результаты удовлетворенных апелляций участников ОГЭ по математике (31.05.2016) и русскому языку (03.06.2016).'}


Была идея записать эти данные в файл, а дальше парсить и полученные данные записывать в новый файл, и затем сравнивать его с оригиналом, но вот этот вот код не заработал, а считывать файл по строчкам и далее их сравнивать не очень хочется:

Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
  file = open('out_compare.txt', 'w')
    for result in results:
        file.write(str(result) + '\n')
    file.close()
    if (filecmp.cmp('out.txt','out_compare.txt')):
        print('Nothing new here')
    else:
        print('New results')


Собственно, что дальше с этими данными делать? Как работать с новыми новостями? Спасибо заранее за помощь.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.06.2016, 15:44
Ответы с готовыми решениями:

Любой исправный парсер сайта с уведомлениями в Телеграм
Добрый вечер. Можете пожалуйста дать любой исправный парсер сайта с уведомлениями в Телеграм? Уже более 6 кодов, которые я нашел в...

Подавать ли аппеляцию о результатах ЕГЭ?
Здравствуйте! Прошу у вас срочной помощи! Сегодня - последний день подачи апелляций по результатам ЕГЭ второй волны, нужно знать,...

Структура со сведениями о результатах ЕГЭ
Разработайте структуру, содержащию сведения о результатах ЕГЭ по предмету: Фамилия, Имя, Отчество, Число баллов по первому предмету....

2
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.06.2016, 21:37
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from lxml import html
import requests
from datetime import datetime as dt
 
r = requests.get('http://www.uledu.ru/')
page = html.fromstring(r.content)
 
# titles = [title.text.strip() for title in page.cssselect('.contentheading')]
dates = [dt.strptime(date.text.strip(), '%d.%m.%Y %H:%M') for date in page.cssselect('.createdate')]
 
# last_title = titles[0]
# last_date = dates[0]
 
print(dates[0])
отдаст дату и время последней новости, её можно и сравнивать при очередном парсинге.

Code
1
2
/Users/jabbson/.virtualenvs/py35env/bin/python /Users/jabbson/PycharmProjects/various/cyber.py
2016-06-24 16:56:00
1
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.06.2016, 22:00
а еще у сайта есть RSS со всем вытекающими
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.06.2016, 22:00
Помогаю со студенческими работами здесь

Разработайте структуру, содержащую сведения о результатах ЕГЭ по предмету: (доделать)
Помогите пожалуйста доделать программу: Разработайте структуру, содержащую сведения о результатах ЕГЭ по предмету: Фамилия, Имя,...

Оптимизация телеграм бота
Пытаюсь сделать телеграм бота для поиска. Вроде бы все готово, но вот проблема, def s работает слишком долго и отправляет сообщение...

Создание телеграм-бота
public class Bot extends TelegramLongPollingBot { public static void main(String args) { ApiContextInitializer.init(); ...

PHP Бота телеграм
Ребята нужна помощь Скрипт установлен работает, ну не работает пару функций бота нужно пересмотреть исходняк дам весь доступ к...

Создание телеграм бота
Всем доброго времени суток! Заинтересовался созданием телеграм бота и столкнулся с проблемой... Мне нужно сделать бота, который раз в сутки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru