如何使用 BeautifulSoup 删除 parent 标签

How to remove parent tag with BeautifulSoup

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

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

我正在使用以下代码删除所有 header 个单元格;

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

这很好用,除了我留下了一个空行,以后会把事情搞砸;

<tr> </tr>

我尝试了以下代码,但我得到一个 AttributeError:'NoneType' object 没有属性 'decompose'

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

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

那是因为你在第一次迭代时(headless=<th>head2</th>时)去掉了外面的<tr>,所以当迭代到<th>head2</th>时,它的parent就是[=14] =].

相反,您可以像这样迭代具有 child <td><tr>s :

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