我有一个HTML表格,我试图从中解析信息。但是,有些表跨越多行/列,所以我想要做的就是使用像BeautifulSoup这样的表来将表解析为某种类型的Python结构。我想只是用一个列表的列表,所以我会变成类似BeautifulSoup或正则表达式的HTML表格到数据结构?
<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”,但在某些情况下,我需要删除链接标记(同时保留文本)。
我在想的过程是这样的:
- 查找表
- 计数行的表
- 创建列表
- 解析表到列表(BeautifulSoup语法??(
len(table.findAll('tr'))
?) ?) - ???
- 利润! (嗯,这是一个纯粹的内部程序,所以不是真的...)
LXML已经轻松了许多用至今。 – 2010-09-16 15:45:03