我正在尝试使用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, parser):
copy_soup = soup
for element in copy_soup.find_all():
if not element.find(recursive=False):
element.string = ' ' # removes text from within tags
element.attrs = {} # removes all tag parameters
#return str(copy_soup).split()
return copy_soup.prettify()
print get_tags(soup)
这很有效,直到......你必须处理html5,html4和xhtml之间的void标签和自动关闭标签变体。例如,<meta>
和<meta/>
都应该输出为<meta>
和<meta/>
,但上面的代码会导致<meta></meta>
。我不确定是否需要修改我的代码,或者问题在于我应该使用哪个解析器。