相关疑难解决方法(0)

How to parse an HTML table with rowspans in Python?

The problem

I'm trying to parse an HTML table with rowspans in it, as in, I'm trying to parse my college schedule.

I'm running into the problem where if the last row contains a rowspan, the next row is missing a TD where the rowspan is now that TD that is missing.

I have no clue how to account for this and I hope to be able to parse this schedule.

What I tried

Pretty much everything I can think …

html python html-table beautifulsoup python-3.x

25
推荐指数
1
解决办法
1562
查看次数

用rowpan和colspan解析一张桌子

我有一张桌子需要解析,特别是这是一个有4个时间段的学校时间表,每周5个时段.我试图解析它,但老实说还没有走得太远因为我对如何处理rowspan和colspan属性感到困惑,因为它们本质上意味着我需要继续缺少数据.

作为我想要做的一个例子,这是一个表:

<tr>
    <td colspan="2" rowspan="4">#1</td>
    <td rowspan="4">#2</td>
    <td rowspan="2">#3</td>
    <td rowspan="2">#4</td>
</tr>

<tr>
</tr>

<tr>
    <td rowspan="2">#5</td>
    <td rowspan="2">#6</td>
</tr>

<tr>
</tr>
Run Code Online (Sandbox Code Playgroud)

我想把那个表转换成这个列表:

[[1,1,2,3,4],
 [1,1,2,3,4],
 [1,1,2,5,6],
 [1,1,2,5,6]]
Run Code Online (Sandbox Code Playgroud)

现在我得到一个平面列表,类似于:

[1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)

但是在字典形式中,有关于它跨越多少列和行的信息,它的描述以及它的周.

显然,这需要适用于rowspan/colspan的所有可能性,并且需要在同一个表中使用多周.

html并不像我描述的那样干净,我遗漏了许多属性,文本显然不像1,2,3,4那样简洁,而是描述性文本块.但是,如果我能够解决这个问题,那么它应该很容易融入我已经写过的内容中.

我一直在使用lxml.html和Python来做这件事,但如果它提供了更简单的解决方案,我愿意使用其他模块.

我希望有人可以帮助我,因为我真的不知道该怎么做.

编辑:

<table>
    <tr>
        <td> </td>
        <td> </td>
        <td> </td>
        <td rowspan="4">Thing</td>
        <td> </td>
    </tr>
    <tr>
        <td> </td>
        <td> </td>
        <td> </td>
        <td> </td>
    </tr>
    <tr>
        <td> </td>
        <td> </td>
        <td> </td>
        <td> </td>
    </tr>
    <tr>
        <td> </td>
        <td> </td>
        <td> </td>
        <td> </td>
    </tr>
</table> …
Run Code Online (Sandbox Code Playgroud)

python lxml html-table html-parsing

13
推荐指数
1
解决办法
8442
查看次数