【发布时间】:2017-05-29 04:55:12
【问题描述】:
我正在尝试使用 Beautifuloup 提取 html 标签并删除文本。以这个 html 为例:
html_page = """
<html>
<body>
<table>
<tr class=tb1><td>Lorem Ipsum dolor Sit amet</td></tr>
<tr class=tb1><td>Consectetuer adipiscing elit</td></tr>
<tr><td>Aliquam Tincidunt mauris eu Risus</td></tr>
<tr><td>Vestibulum Auctor Dapibus neque</td></tr>
</table>
</body>
</html>
"""
想要的结果是:
<html>
<body>
<table>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
</table>
</body>
</html>
这是我目前所得到的:
def get_tags(soup):
copy_soup = soup
for tag in copy_soup.findAll(True):
tag.attrs = {} # removes attributes of a tag
tag.string = ''
return copy_soup
print get_tags(soup)
使用 tag.attrs = {} 可以删除所有标签属性。但是当我尝试使用 tag.string 或 tag.clear() 时,我只剩下<html></html>。我知道在第一次迭代中使用tag.string 或tag.clear() 可能会删除html 标记中的所有内容。
我不确定如何解决这个问题。也许首先递归地删除孩子的文本?还是我缺少一种更简单的方法?
【问题讨论】:
标签: python html web-scraping beautifulsoup