【发布时间】:2010-09-16 14:28:20
【问题描述】:
我有一个 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 来“渲染内容”,但在某些情况下,我需要去掉链接标签(同时保留文本)。
我在想一个类似这样的过程:
- 查找表
- 计算表中的行数 (
len(table.findAll('tr'))?) - 创建列表
- 将表格解析为列表(BeautifulSoup 语法???)
- ???
- 利润! (嗯,这是一个纯粹的内部程序,所以不是真的......)
【问题讨论】:
标签: python regex beautifulsoup