如何使用BeautifulSoup删除父标记

时间:2015-05-27 02:14:19

标签: python beautifulsoup html-parsing

我正在尝试使用BeautifulSoup从html表中删除标题单元格。我有类似的东西;

<tr> <th> head1 </th> <th> head2 </th> </tr>

我使用以下代码删除所有标题单元格;

soup = BeautifulSoup(url)    
for headless in soup.find_all('th'):
        headless.decompose()

这很有效,除了我留下一个空行,后来会让事情变得混乱;

<tr> </tr>

我尝试了下面的代码,但是我得到了一个AttributeError:'NoneType'对象没有属性'decompose'

for headless in soup.find_all('th'):
    headless.parent.decompose()

如何删除包含标题单元格的行或稍后删除空白行?谢谢。

1 个答案:

答案 0 :(得分:1)

那是因为你在第一次迭代时删除了外部<tr>(当headless=<th>head2</th>时),所以当迭代到达<th>head2</th>时,它的父亲是None

相反,您可以迭代<tr>生成孩子<td>,如下所示:

for headless in (tr for tr in soup.find_all('tr') if tr.find('th')):
    headless.decompose()