Почему возвращается пустой список и как это исправить?
Почему возвращается пустой список и как это исправить? Вот мой код:
import requests
from bs4 import BeautifulSoup
url = 'https://m-raspisanie.asu.edu.ru/student/%D0%94%D0%98%D0%A421'
response = requests.get(url=url)
soup = BeautifulSoup(response.text, 'lxml') # Полная страница расписания
soup1 = soup.find('div', class_='vot_den current-day') # Страница сегодняшнего дня(занятия числителя и расписания)
if soup1 is not None:
soup2 = soup1.find_all('div', class_='den-content chislit-day') # Строка в таблице
print(soup2)
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
У вас в поиске лишний класс 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 Л.Техническая защита информацииДемина Р.Ю.ДОТ