Форум сайта python.su
Здравствуйте, у меня имеется страница html, где есть расписание пар.
<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>
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()
Прикреплённый файлы:
table.html (8,9 KБ)
Офлайн
polygraphТы пытаешься сделать всё за один раз. А надо разделить один алгоритм на множество алгоритмов и подключить их друг к другу по цепочке. Получается такое ветвистое дерево из алгоритмов, в котором алгоритмы растут друг из друга, как ветки растут из ствола и маленькие ветки растут из других веток.
Проблема в том, что не могу разобраться как мне лучше спарсить, чтобы получилось вот так:
Отредактировано py.user.next (Сен. 13, 2021 23:35:08)
Офлайн
polygraph
Проблема в том, что не могу разобраться как мне лучше спарсить, чтобы получилось вот так:
from bs4 import BeautifulSoup with open('html.html',encoding='utf-8') as file: html = file.read() def parse_table(html): out = [] soup = BeautifulSoup(html,'lxml') table = soup.find('table') rows = table.find_all('tr') for row in rows: col = row.find_all(['td','th']) temp = [] for elem in col: temp.append(elem.getText()) out.append(temp) return out my_table = parse_table(html) for i in my_table: print(f"{i[0]} {i[1].strip() if i[1] != '' else 'нет пары'}")
Пара Понедельник (13.09.2021) 1 нет пары 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 нет пары Process finished with exit code 0
Онлайн