У меня есть таблица HTML, из которой я пытаюсь проанализировать информацию. Однако некоторые таблицы занимают несколько строк / столбцов, поэтому я хотел бы использовать что-то вроде BeautifulSoup для разбора таблицы на структуру Python некоторого типа. Я думаю просто использовать список списков, чтобы я мог превратить что-то вроде
<tr>
<td>1,1</td>
<td>1,2</td>
</tr>
<tr>
<td>2,1</td>
<td>2,2</td>
</tr>
в
[['1,1', '1,2'],
['2,1', '2,2']]
Что я (думаю) должно быть довольно простым. Тем не менее, есть некоторые небольшие осложнения, потому что некоторые клетки занимают несколько строк / столбцов. Плюс есть много совершенно ненужной информации:
<td ondblclick="DoAdd('/student_center/sc_all_rooms/d05/09/2010/editformnew?display=W&style=L&positioning=A&adddirect=yes&accessid=CreateNewEdit&filterblock=N&popeditform=yes&returncalendar=student_center/sc_all_rooms')"
class="listdefaultmonthbg"
style="cursor:crosshair;"
width="5%"
nowrap="1"
rowspan="1">
<a class="listdatelink"
href="/student_center/sc_all_rooms/d05/09/2010/edit?style=L&display=W&positioning=A&filterblock=N&adddirect=yes&accessid=CreateNewEdit">Sep 5</a>
</td>
А на самом деле код выглядит еще хуже. Все, что мне действительно нужно, это:
<td rowspan="1">Sep 5</td>
Двумя строками позже есть строка с 17-ю интервалами строк. Для многострочных интервалов я думал примерно так:
<tr>
<td rowspan="2">Sep 5</td>
<td>Some event</td>
</tr>
<tr>
<td>Some other event</td>
</tr>
закончится так:
[["Sep 5", "Some event"],
[None, "Some other event"]]
На странице несколько таблиц, и я уже могу найти ту, которая мне нужна, я просто не знаю, как разобрать нужную мне информацию. Я знаю, что могу использовать BeautfulSoup для «RenderContents», но в некоторых случаях есть теги ссылок, от которых мне нужно избавиться (при сохранении текста).
Я думал о процессе, похожем на этот:
- Найти таблицу
- Количество строк в таблицах (
len(table.findAll('tr'))
?)
- Создать список
- Анализ таблицы в списке (синтаксис BeautifulSoup ???)
- Прибыль! (Ну, это чисто внутренняя программа, так что не совсем ...)