У вас в поиске лишний класс chislit-day
, сейчас дни описаны классом znamenat-day
. Просто уберите его, т.к. он служит только для дополнительной фильтрации
Переписал парсер:
- Использовал
html.parser
- он встроенный
- Использовал css-селекторы для поиска через методы
select
/select_one
- с ними короче выходит
- Добавил пример вытаскивания значений, но для
ch_zn
наверняка понадобится дополнительный парсинг, который не буду описывать
Пример:
import requests
from bs4 import BeautifulSoup
url = 'https://m-raspisanie.asu.edu.ru/student/%D0%94%D0%98%D0%A421'
rs = requests.get(url)
soup = BeautifulSoup(rs.text, 'html.parser') # Полная страница расписания
current_day_el = soup.select_one('.vot_den.current-day')
if current_day_el:
for para_el in current_day_el.select('.den-content'):
number = para_el.select_one('.npara').text
time = para_el.select_one('.time-para').get_text(separator='-')
ch_zn = para_el.select_one('.ch-zn').get_text(strip=True)
print(number, time, ch_zn)
Результат:
1 пара 08:30-09:50 П.Иностранный язык (профессионально-ориентированный)гр.2Трофимова А.Н.ауд.ТП.714П.Иностранный язык (профессионально-ориентированный)гр.2Трофимова А.Н.ауд.ТП.714
2 пара 10:05-11:25 П.Элективные курсы по физической культуре и спортуП.Элективные курсы по физической культуре и спорту
3 пара 11:40-13:00 П.Иностранный язык (профессионально-ориентированный)гр.1Лысикова И.В.ауд.ТО.501П.Иностранный язык (профессионально-ориентированный)гр.1Лысикова И.В.ауд.ТО.501
5 пара 14:50-16:10 Л.Техническая защита информацииДемина Р.Ю.ДОТ