Comments 18
Возможно лучше воспользоваться assert'ом?
if len(datefrom) != 10 or len(dateto) != 10:
raise DnevnikError("Неверно указаны dateto или datefrom", "Parameters error")
if str(studyyear) not in datefrom:
raise DnevnikError("StudyYear должен соответствовать datefrom", "Parameters error")
Невероятно
choose = '%D0%9F%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D1%8C'
:wow:
subject = [i[2],
i[0].replace('\n\r\n ', '').replace(
'\r\n \n', ''),
i[3].replace('\n\n', '').replace('\xa0', ' ').replace('\r\n \t\t\t ', '').replace(
'\r\n \r\n\t\t\t\t \n', '')]
И ещё 100500 пунктов...
В общем, реализация - :crap:, а идея хорошая
Спасибо за фидбэк! Буду исправлять
Не обращайте внимания, человек выше просто самоутвержиться за ваш счет решил.
Спасибо за то что выложили в открытый доступ - тоже хотел парсить, но у них там структура конечно адская для парсинга, я открыл - посмотрел и закрыл)
Отличное работа, сам занимался подобным в начале карьеры разработчика.
А для того, чтобы писать красивый код, с эффективным использованием функционала языка, советую прочитать пару книг по разработке, я бы выбрал "A byte of Python". По моему мнению - лучшая для новичка.
Насчёт assert'ов возражу, при отключённом режиме отладки (например, при запуске с ключом -O2) assert'ы не будут делать ничего от слова совсем.
О круто, сам уже пару месяцев парсер делаю для этого поделия (dnevnik.ru). Какие планы на развитие проекта?
Пока что буду фиксить некачественный код по советам Хабровчан из комментариев. Потом буду придумывать новые методы и расширять функционал. Вот мне там ниже рассказали о /currentprogress/choose?userComeFromSelector=True
Попробую с помощью этого какой-нибудь новый метод написать. Например, для просмотра результатов недели
Реализация конечно никуда не годится.
И самое главное там же есть доступ просто к гос. услуге по информации успеваемости /currentprogress/choose?userComeFromSelector=True открывается в плоскую страницу, также имеет все оценки и информацию о ДЗ. Парсить её куда проще.
Не могу утверждать, но скорее всего приложение дневник ру общается с сервером по нормальному апи. Если нужно - могу посмотреть и скинуть запросы
И претензия к тексту статьи - неплохо бы код оформить "как код", т. е. с подсветкой синтаксиса, и вообще мне кажется не очень удобным расположение описания методов в спойлерах.
Небольшой модуль для работы с dnevnik.ru на python