Парсинг виртуальной школы
Хочу получить домашку из дневника. Мой код:
from requests import Session
from bs4 import BeautifulSoup
import fake_useragent
from time import sleep
import requests
ua = fake_useragent.UserAgent()
headers = {'User-Agent': ua.random}
work = Session()
work.get('https://www.vsopen.ru/', headers=headers)
response = work.get('https://belgorod.vsopen.ru/app/login?loginerror&redirect_url=', headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
data = {'login' : 'логин', 'password' : 'пароль'}
res = work.post('https://belgorod.vsopen.ru/app/login?loginerror&redirect_url=', headers=headers, data=data,\
allow_redirects=True)
result1 = work.post('https://belgorod.vsopen.ru/app/', headers=headers)
print(result1.text)
На выходе получаю:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
<base href="https://belgorod.vsopen.ru/app/" />
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<meta http-equiv="Cache-Control" content="no-cache"/>
<meta http-equiv="pragma" content="no-cache"/>
<title>VSopen.ru :: Виртуальная школа</title>
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="client/ru/vsopen/system/css/iestyle.css?2870" />
<![endif]-->
<link rel="stylesheet" type="text/css" href="client/ru/vsopen/system/css/style.css?2870"/>
<link rel="stylesheet" type="text/css" href="client/ru/vsopen/system/css/pretty_table.css?2870"/>
<link rel="stylesheet" type="text/css" href="client/ru/vsopen/system/css/smartpaginator.css?2870"/>
<link rel="stylesheet" type="text/css" href="client/css/system/tableClone.css?2870"/>
<link rel="icon" href="images/favicon.ico" type="image/x-icon"/>
<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon"/>
<!-- jquery -->
<script type="text/javascript" src="client/ru/vsopen/system/js/jquery-ui/js/jquery.min.js?2870"></script>
<script type="text/javascript" src="client/ru/vsopen/system/js/jquery-ui/js/jquery-ui.min.js?2870"></script>
<link rel="stylesheet" href="client/ru/vsopen/system/js/jquery-ui/css/jquery-ui.min.css?2870"/>
<script type="text/javascript" src="client/js/lib/moment-with-locales.js?2870"></script>
<script type="text/javascript" src="client/js/lib/moment-timezone.js?2870"></script>
<script type="text/javascript" src="client/js/lib/moment-timezone-data.js?2870"></script>
<script type="text/javascript" src="client/js/lib/soyutils.js?2870"></script>
<!-- underscore -->
<script type="text/javascript" src="client/js/lib/underscore-min.js?2870"></script>
<script type="text/javascript" src="client/ru/vsopen/system/js/globalvsopen.js?2870"></script>
<script type="text/javascript" src="client/ru/vsopen/system/js/jquery-redirect/jquery.redirect.js?2870"></script>
<!-- qtip tooltip-->
<script type="text/javascript" src="client/ru/vsopen/system/js/qtip/jquery.qtip.js?2870"></script>
<link rel="stylesheet" type="text/css" href="client/ru/vsopen/system/js/qtip/jquery.qtip.css?2870"/>
<!-- chosen -->
<script src="client/ru/vsopen/system/js/chosen/chosen.jquery.min.js?2870" type="text/javascript"></script>
<script src="client/ru/vsopen/system/js/chosen/chosen.proto.min.js?2870" type="text/javascript"></script>
<link rel="stylesheet" href="client/ru/vsopen/system/js/chosen/chosen.min.css?2870"/>
<!--workAreaSelector-->
<link rel="stylesheet" href="client/css/system/selectors.css?2870"/>
<script type="text/javascript" src="client/js/soy/workAreaSelector.js?2870"></script>
<!-- confirm -->
<link rel="stylesheet" type="text/css" href="client/css/system/confirm.css?2870"/>
<script type="text/javascript" src="client/js/soy/confirm.js?2870"></script>
<!-- eduTermSelector -->
<script type="text/javascript" src="client/js/soy/eduTermSelector.js?2870"></script>
<script>
var mainParams = {
baseUrl: '',
apiUrl: '' + 'api/' + '1'
};
</script>
</head>
<body>
<div id="main_header"></div>
<div id="main">
<div id="left">
<div class="widget normal menu" style="width: 81px;">
<div class="header">
<div class="borders">
<div class="nw"></div>
<div class="ne"></div>
</div>
</div>
<div class="content js-menu-content">
<div class="borders">
<div class="w"></div>
<div class="e"></div>
</div>
<link rel="stylesheet" type="text/css" href="client/ru/vsopen/base/menu/css/style.css?2870"/>
<div class="left_menu">
<a href="javascript:void(0);" data-widget="schedulingLesson" title="Учебное расписание" class="tdn js-menu">
<div class="widgets-icons-sprite schedulingLesson"></div>
</a>
<a href="javascript:void(0);" data-widget="eduplans" title="Учебные планы" class="tdn js-menu">
<div class="widgets-icons-sprite eduplans"></div>
</a>
</div>
<div class="left_menu">
<a href="javascript:void(0);" data-widget="thematicplans" title="Тематическое планирование" class="tdn js-menu">
<div class="widgets-icons-sprite thematicplans"></div>
</a>
</div>
<div class="left_menu">
<a href="javascript:void(0);" data-widget="messaging" title="Внутренняя почта" class="tdn js-menu">
<div class="widgets-icons-sprite messaging"></div>
</a>
<a href="javascript:void(0);" data-widget="notifications" title="Уведомления" class="tdn js-menu">
<div class="widgets-icons-sprite notifications"></div>
</a>
</div>
<div class="left_menu">
<a href="javascript:void(0);" data-widget="studentDiary" title="Дневник" class="tdn js-menu">
<div class="widgets-icons-sprite studentDiary"></div>
</a>
<a href="javascript:void(0);" data-widget="studentportfolio" title="Портфолио ученика" class="tdn js-menu">
<div class="widgets-icons-sprite studentportfolio"></div>
</a>
<a href="javascript:void(0);" data-widget="studentReport" title="Табель успеваемости" class="tdn js-menu">
<div class="widgets-icons-sprite studentReport"></div>
</a>
</div>
<script type="text/javascript">MENU.init({baseUrl: ''});</script> </div>
<div class="footer">
<div class="borders">
<div class="sw"></div>
<div class="se"></div>
<div class="s"></div>
</div>
</div>
</div>
</div>
<div id="minblocks"></div>
<div id="normalblocks">
<div id="wx0" class="widget normal start js-start-widget" style="width: 600px;">
<div id="wx0_module" class="start"></div>
<div class="header">
<div class="borders">
<div class="nw"></div>
<div class="ne"></div>
</div>
<div class="widget_header">
<h2>Добро пожаловать, Гринко Ярослав Владимирович.</h2>
</div>
<div class="buttons">
<script type="text/javascript">
WIDGET.initWidget({baseUrl: '', prefix: 'wx0', widget: 'start'});
</script>
<div class="button-border"></div>
<a href="javascript:void(0);" class="close js-widget-close" title="Закрыть"></a>
</div>
</div>
<div class="content">
<div class="borders">
<div class="w"></div>
<div class="e"></div>
</div>
<div class="js-widget-loaders">
<div id="wx0_loader" class="loader"></div>
<div id="wx0_divloader" class="divloader"></div>
</div>
<link rel="stylesheet" type="text/css" href="client/css/system/importExport.css?2870"/>
<div class="import-export-panel">
<script>
IMPORT_EXPORT_PANEL.init({
baseUrl: '',
prefix: 'wx0',
widget: 'start'
});
</script>
</div>
<link rel="stylesheet" type="text/css" href="client/ru/vsopen/base/start/css/main.css?2870" />
<div class="selected6 err newsHeader">
Уважаемые пользователи!<br/>
</div>
<div class="selected6 news">
<h3 class="b err">Доступен переход на новый учебный год 2022/2023. Вы можете скачать файл с руководством на стартовом виджете кликом по ссылке "Порядок перехода на новый учебный год".</h3>
</div>
<span class="tar db">
<a class="downloadLink b" href="client/files/Переход на новый учебный год.docx" target="_blank">
Порядок перехода на новый учебный год
</a>
<a class="downloadLink b" href="client/files/ИСОУ Виртуальная школа. Руководство.zip" target="_blank">
Скачать руководство пользователя
</a>
<a class="downloadLink " href="client/files/edu_term_course.pdf" target="_blank">
Инструкция по добавлению курса, не рассчитанного на полный учебный год
</a>
<a class="downloadLink " href="client/files/Учет посещаемости учеников.pdf" target="_blank">
Учет посещаемости учеников
</a>
<a class="downloadLink " href="client/files/Руководство_по_контролю_домашнего_задания.pdf" target="_blank">
Руководство по контролю домашнего задания
</a>
<a class="downloadLink " href="client/files/Руководство_Уведомления.pdf" target="_blank">
Руководство по работе в виджете "Уведомления"
</a>
</span>
<div class="section" title="Классы">
<div class="section-content">
<ul>
<li>
<a href="javascript:void(0);" title="Учебное расписание"
class="widgets-icons-sprite schedulingLesson js-start"
data-widget="schedulingLesson"
data-id=""
>
<span>Учебное расписание</span>
</a>
</li>
<li>
<a href="javascript:void(0);" title="Учебные планы"
class="widgets-icons-sprite eduplans js-start"
data-widget="eduplans"
data-id=""
>
<span>Учебные планы</span>
</a>
</li>
</ul>
</div>
</div>
<div class="section" title="Образовательный процесс">
<div class="section-content">
<ul>
<li>
<a href="javascript:void(0);" title="Тематическое планирование"
class="widgets-icons-sprite thematicplans js-start"
data-widget="thematicplans"
data-id=""
>
<span>Тематическое планирование</span>
</a>
</li>
</ul>
</div>
</div>
<div class="section" title="Сервис">
<div class="section-content">
<ul>
<li>
<a href="javascript:void(0);" title="Внутренняя почта"
class="widgets-icons-sprite messaging js-start"
data-widget="messaging"
data-id=""
>
<span>Внутренняя почта</span>
</a>
</li>
<li>
<a href="javascript:void(0);" title="Уведомления"
class="widgets-icons-sprite notifications js-start"
data-widget="notifications"
data-id=""
>
<span>Уведомления</span>
</a>
</li>
</ul>
</div>
</div>
<div class="section" title="Успеваемость">
<div class="section-content">
<ul>
<li>
<a href="javascript:void(0);" title="Дневник"
class="widgets-icons-sprite studentDiary js-start"
data-widget="studentDiary"
data-id=""
>
<span>Дневник</span>
</a>
</li>
<li>
<a href="javascript:void(0);" title="Портфолио ученика"
class="widgets-icons-sprite studentportfolio js-start"
data-widget="studentportfolio"
data-id=""
>
<span>Портфолио ученика</span>
</a>
</li>
<li>
<a href="javascript:void(0);" title="Табель успеваемости"
class="widgets-icons-sprite studentReport js-start"
data-widget="studentReport"
data-id=""
>
<span>Табель успеваемости</span>
</a>
</li>
</ul>
</div>
</div>
<script type="text/javascript">START.init({baseUrl: '', prefix: 'wx0'});</script>
<div class="cb"></div> </div>
<div class="footer">
<div class="borders">
<div class="sw"></div>
<div class="se"></div>
<div class="s"></div>
</div>
<link rel="stylesheet" type="text/css" href="client/css/system/confirm.css?2870"/>
<!--в данных инпутах содержится информация для подтверждений-->
<input value="start" type="hidden" id="wx0_widgetName"/>
</div>
</div>
</div>
<div id="header">
<a href=""></a>
<div id="sidebarblock" class="js-side-bar">
<link rel="stylesheet" type="text/css" href="client/ru/vsopen/base/sideBar/css/style.css?2870"/>
<div class="top_menu">
<ul>
<li class="menu_li js-side-bar-element">
<div class="tmr">
<a class="js-side-bar-link" data-widget="start" href="javascript:void(0);">Начать работу</a>
</div>
</li>
<li class="menu_li js-side-bar-menu">
<div class="tmr">
<span>Классы</span>
</div>
<div class="sub hid js-side-bar-sub-menu">
<div class="cont">
<ul>
<li class="js-side-bar-element js-side-bar-link" data-widget="schedulingLesson">
<span>Учебное расписание</span>
</li>
<li class="js-side-bar-element js-side-bar-link" data-widget="eduplans">
<span>Учебные планы</span>
</li>
</ul>
</div>
</div>
</li>
<li class="menu_li js-side-bar-menu">
<div class="tmr">
<span>Образовательный процесс</span>
</div>
<div class="sub hid js-side-bar-sub-menu">
<div class="cont">
<ul>
<li class="js-side-bar-element js-side-bar-link" data-widget="thematicplans">
<span>Тематическое планирование</span>
</li>
</ul>
</div>
</div>
</li>
<li class="menu_li js-side-bar-menu">
<div class="tmr">
<span>Сервис</span>
</div>
<div class="sub hid js-side-bar-sub-menu">
<div class="cont">
<ul>
<li class="js-side-bar-element js-side-bar-link" data-widget="messaging">
<span>Внутренняя почта</span>
</li>
<li class="js-side-bar-element js-side-bar-link" data-widget="notifications">
<span>Уведомления</span>
</li>
</ul>
</div>
</div>
</li>
<li class="menu_li js-side-bar-menu">
<div class="tmr">
<span>Успеваемость</span>
</div>
<div class="sub hid js-side-bar-sub-menu">
<div class="cont">
<ul>
<li class="js-side-bar-element js-side-bar-link" data-widget="studentDiary">
<span>Дневник</span>
</li>
<li class="js-side-bar-element js-side-bar-link" data-widget="studentportfolio">
<span>Портфолио ученика</span>
</li>
<li class="js-side-bar-element js-side-bar-link" data-widget="studentReport">
<span>Табель успеваемости</span>
</li>
</ul>
</div>
</div>
</li>
</ul>
</div>
<script type="text/javascript">SIDE_BAR.init({baseUrl: ''});</script>
</div>
<div id="timer" class="timer">
20:13
</div>
<div class="js-session_dialog_window">
<div class="in hid js-session-dialog-text">
<div class="modal-header student__header clearfix">
<span class="modal-title">Уважаемый пользователь!</span>
</div>
<div>
<span>
В целях безопасности сеанс работы завершен, т.к. длительное время вы не
совершали никаких действий.
Для продолжения работы введите, пожалуйста, заново ваши логин и пароль.
</span>
</div>
</div>
</div>
<div class="js-right-panel right-panel">
<link rel="stylesheet" href="client/css/system/rightPanel.css?2870"/>
<script type="text/javascript" src="client/js/soy/notificationPanel.js?2870"></script>
<a href="javascript:void(0);" title="Личный кабинет" class="js-right-panel-person">
<div class="widgets-icons-sprite persons"></div>
</a>
<a href="javascript:void(0);" title="Уведомления" class="js-right-panel-notification right-panel-notification">
<div class="widgets-icons-sprite notifications">
<span class="right-panel-notification-counter js-right-panel-notification-counter hid">0</span>
</div>
</a>
<a href="javascript:void(0);" title="Внутренняя почта" class="messaging js-right-panel-messaging">
0
</a>
<a href="javascript:void(0);" title="Выход" class="js-right-panel-logout logout"></a>
<div class="js-right-panel-notification-modal right-panel-notification-modal">
<div class="in hid js-right-panel-notification-modal-in">
<div class="modal-header student__header clearfix">
<span class="modal-title">Новое уведомление!</span>
</div>
<div class="js-right-panel-notification-modal-content"></div>
</div>
</div>
<script type="text/javascript">RIGHT_PANEL.init({baseUrl: ''});</script>
<script type="text/javascript">
NOTIFICATION_PANEL.init({
baseUrl: '',
baseApiUrl: 'api/1'
});
</script>
</div>
</div>
</div>
</body>
</html>
Блок отвечающий за домашку пустой( и на 422 строчке:
В целях безопасности сеанс работы завершен, т.к. длительное время вы не совершали никаких действий. Для продолжения работы введите, пожалуйста, заново ваши логин и пароль.
Сайт походу видит, что я бот. Переход на селениум не рассматриваю. Буду рад любой помощи и фидбэку.