<div class="table-responsive"> <table class="table table-striped table-boxed table-bordered responsive" id="schedule_table"> <thead> <tr> <th width="4%">Пара</th> <th class="schedule-table-top-header" width="17%">Понедельник <br/> (13.09.2021)</th> <th class="schedule-table-top-header" width="16%">Вторник <br/> (14.09.2021)</th> <th class="schedule-table-top-header" width="16%">Среда <br/> (15.09.2021)</th> <th class="schedule-table-top-header" width="16%">Четверг <br/> (16.09.2021)</th> <th class="schedule-table-top-header" width="16%">Пятница <br/> (17.09.2021)</th> <th class="schedule-table-top-header" width="16%">Суббота <br/> (18.09.2021)</th> </tr> </thead> <tbody id="schedule_table_tbody"> <tr> <td>1</td> <!-- Понедельник--> <td></td> <!-- Вторник--> <td></td> <!-- Среда--> <td></td> <!-- Четверг--> <td></td> <!-- Пятница--> <td></td> <!-- Суббота--> <td></td> </tr> <tr> <td>2</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td>3</td> <td title="12:00 – 13:30"> <h5 class="text-highlight">Математика</h5> (пр)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 12:00 – 13:30<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/1234" target="_blank">Иванов И.И.</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-505</b><br/> </td> <td></td> <td></td> <td title="12:00 – 13:30"> <h5 class="text-highlight">Информатика</h5> <i>(В образовании)</i><br/> (лаб)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 12:00 – 13:30<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/131" target="_blank">Иванов И.И</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-505</b><br/><b>Подгруппа 1</b><br/> <hr/> <i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/466" target="_blank">Иванов И.И</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-505</b><br/><b>Подгруппа 2</b><br/> </td> <td></td> <td></td> </tr> <tr> <td>4</td> <td title="13:40 – 15:10"> <h5 class="text-highlight">Информатика</h5> (лек)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 13:40 – 15:10<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/151" target="_blank">Петров А.А.</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-50</b><br/> </td> <td title="13:40 – 15:10"> <h5 class="text-highlight">Высшая математика</h5> <i>(В образовании)</i><br/> (лек)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 13:40 – 15:10<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/5704" target="_blank">Петров А.Н.</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-55</b><br/> </td> <td title="13:40 – 15:10"> <h5 class="text-highlight">Базы данных</h5> <i>(В образовании)</i><br/> (лек)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 13:40 – 15:10<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/3686" target="_blank">Петров А.В.</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 9-505</b><br/> </td> <td title="13:40 – 15:10"> <h5 class="text-highlight">Информатика</h5> <i>(В образовании)</i><br/> (лаб)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 13:40 – 15:10<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/131" target="_blank">Петров К.А.</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 8-700</b><br/><b>Подгруппа 1</b><br/> <hr/> <i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/466" target="_blank">Волков В.Н.</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-505</b><br/><b>Подгруппа 2</b><br/> </td> <td title="13:40 – 15:10"> <h5 class="text-highlight">Информатика</h5> <i>(В образовании)</i><br/> (лек)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 13:40 – 15:10<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/466" target="_blank">Петров К.А..</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-50</b><br/> </td> <td></td> </tr> <tr> <td>5</td> <td title="15:20 – 16:50"> <h5 class="text-highlight">Математика</h5> <i>(В образовании)</i><br/> (лек)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 15:20 – 16:50<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/5704" target="_blank">Петров А.В.</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-50</b><br/> </td> <td title="15:20 – 16:50"> <h5 class="text-highlight">Программирование на языке Python</h5> <i>(В образовании))</i><br/> (лек)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 15:20 – 16:50<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/139" target="_blank">Петров А.В.</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-50</b><br/> </td> <td title="15:20 – 16:50"> <h5 class="text-highlight">Информатика</h5> <i>(В образовании))</i><br/> (лек)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 15:20 – 16:50<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/139" target="_blank">Петров А.В.</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-50</b><br/> </td> <td title="15:20 – 16:50"> <h5 class="text-highlight">Физ-ра</h5> <i>(В образовании)</i><br/> (лек)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 15:20 – 16:50<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/466" target="_blank">Петров А.В.</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-50</b><br/> </td> <td title="15:20 – 16:50"> <h5 class="text-highlight">Программирование на языке Python</h5> (лек)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 15:20 – 16:50<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/3679" target="_blank">Петров А.В.</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-50</b><br/> </td> <td></td> </tr> <tr> <td>6</td> <td></td> <td></td> <td></td> <td title="17:00 – 18:30"> <h5 class="text-highlight">Программирование на языке Python</h5> (лек)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 17:00 – 18:30<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/151" target="_blank">Иванов А.В.</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-50</b><br/> </td> <td title="17:00 – 18:30"> <h5 class="text-highlight">Физ-ра</h5> (лек)<br/><i aria-hidden="true" class="fa fa-clock-o"></i> 17:00 – 18:30<br/><i aria-hidden="true" class="fa fa-user-o"></i> <a href="/person/1234" target="_blank">Иванов А.Б.</a><br/><b><i aria-hidden="true" class="fa fa-map-marker"></i> 10-50</b><br/> </td> <td></td> </tr> <tr> <td>7</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td>8</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> </div>
в тегах tr имеются td. Первый td - это пара по счету, далее теги td это дни недели - Понедельник..Суббота.
Проблема в том, что не могу разобраться как мне лучше спарсить, чтобы получилось вот так:
Понедельник
(13.09.2021)
1 - Нет пары (т.к. td пуст)
2 - Нет пары
3 Математика (пр)
12:00 – 13:30
Иванов И.И.
10-505
4 Информатика (лек)
13:40 – 15:10
Петров А.А.
10-50
5 Математика
(В образовании)
(лек)
15:20 – 16:50
Петров А.В.
10-50
6 - Нет пары
7 - Нет пары
8 - Нет пары
и т.п.
вот что у меня есть на данный момент
def parse_table(): with open('table.html', encoding='utf-8') as file: src = file.read() soup = BeautifulSoup(src, "lxml") table = soup.find('table', attrs={'id': 'schedule_table'}) stud = table.findAll('tbody', attrs={'id': 'schedule_table_tbody'}) cells = [] for row in table.findAll("td"): cells.append(row.text) print(cells) parse_table()