Задать вопрос
@alex44456

Как ограничить парсинг данных BeautifulSoup и собрать только определенные значения?

На сайте есть время начала и конца пар. Я делаю запрос на страницу с информацией о парах на конкретный день, и вывожу её пользователю в телеграм боте с помощью библиотеке aiogram. Проблема в том, что информация на каждый день находится всегда под одинаковым значением атрибута class. Легче показать на примере.

Тут информация только о 3 и 4 паре ибо в этот день других нет:
<td><div>Пн</div><div class="mh-50 cell cell-vertical"><span class="lesson">3 пара</span><span class="start">11:45</span><span class="finish">13:20</span></div><div class="mh-50 cell cell-vertical"><span class="lesson">4 пара</span><span class="start">13:30</span><span class="finish">15:05</span></div></td>


А вот информация про следующий день, тут уже 4 пары:
<td><div>Вт</div><div class="mh-50 cell cell-vertical"><span class="lesson">1 пара</span><span class="start">08:00</span><span class="finish">09:35</span></div><div class="mh-50 cell cell-vertical"><span class="lesson">2 пара</span><span class="start">09:45</span><span class="finish">11:20</span></div><div class="mh-50 cell cell-vertical"><span class="lesson">3 пара</span><span class="start">11:45</span><span class="finish">13:20</span></div><div class="mh-50 cell cell-vertical"><span class="lesson">4 пара</span><span class="start">13:30</span><span class="finish">15:05</span></div></td>


Проблемы возникают из-за того, что на странице где отображается информация о расписании на сегодняшний день отображается так же стандартное время и для других дней, хотя сами предметы не показываются:
xrkiu65h4w1clzrkvwihy-yvhzu.png

Вот то же самое но в коде страницы:
<td><div>Ср</div><div class="mh-50 cell cell-vertical"><span class="lesson">1 пара</span><span class="start">08:00</span><span class="finish">09:35</span></div></td>


Вопрос: как можно собрать информацию о времени всех пар только для конкретного дня? Для парсинга самих предметов использую вот такой код:
url = ''
		response = requests.get(url)
		html = response.text
		soup = BeautifulSoup(html, 'lxml')
		today = soup.findAll("div", {"class" : "cell mh-50", "data-rel" : "popover", "data-placement" : "right"})
		for i in range(0, len(today)):
			today_data = today[i]["data-content"].replace("<br>", "")
			await bot.send_message(message.from_user.id, today_data)
  • Вопрос задан
  • 198 просмотров
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
datka
@datka
from datetime import date
today = date.today()
d1 = today.strftime("%d.%m.%Y")
print("d1 =", d1)

Дальше если d1 = твоей дате найденной soup-ом то выводим пару.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы