【发布时间】:2019-04-30 04:58:47
【问题描述】:
我有一个嵌套表结构。我正在使用下面的代码来解析数据。
for row in table.find_all("tr")[1:][:-1]:
for td in row.find_all("td")[1:]:
dataset = td.get_text()
这里的问题是当有嵌套表时,比如在我的情况下,<td></td> 内部有表,所以在最初解析后再次解析这些表,因为我使用的是 find_all(tr) 和 find_all(td)。那么如何避免解析已经解析的嵌套表呢?
输入:
<table>
<tr>
<td>1</td><td>2</td>
</tr>
<tr>
<td>3</td><td>4</td>
</tr>
<tr>
<td>5
<table><tr><td>11</td><td>22</td></tr></table>
6
</td>
</tr>
</table>
预期输出:
1 2
3 4
5
11 22
6
但我得到的是:
1 2
3 4
5
11 22
11 22
6
即再次解析内表。
规格:
beautifulsoup4==4.6.3
应保留数据顺序,内容可以是任何内容,包括任何字母数字字符。
【问题讨论】:
-
有网址可以分享吗?能否指出预期的输出?
-
如果您的
td是您的行的直接子代,您可以使用recursive=False作为find_all方法中的参数。喜欢:row.find_all("td", recursive=False) -
@Maaz 尝试过,但仍然可以解析
-
如果你能给出一些具体的输入例子和你想要的结果会更好。
-
@InfectedDrake,我添加了示例输入和预期输出
标签: python-3.x html-table beautifulsoup