使用美丽的汤从字符串中去除html标签
问题描述:
有没有人有一些示例代码说明如何使用Python的美丽汤去除所有的html标签,除了一些文本字符串?使用美丽的汤从字符串中去除html标签
我想要去除所有的JavaScript和HTML标签一切除了:
<a></a>
<b></b>
<i></i>
而且还搞什么:
<a onclick=""></a>
感谢您的帮助 - 我无法找到太多的互联网上这个目的。
答
import BeautifulSoup
doc = '''<html><head><title>Page title</title></head><body><p id="firstpara" align="center">This is <i>paragraph</i> <a onclick="">one</a>.<p id="secondpara" align="blah">This is <i>paragraph</i> <b>two</b>.</html>'''
soup = BeautifulSoup.BeautifulSoup(doc)
for tag in soup.recursiveChildGenerator():
if isinstance(tag,BeautifulSoup.Tag) and tag.name in ('a','b','i'):
print(tag)
产生
<i>paragraph</i>
<a onclick="">one</a>
<i>paragraph</i>
<b>two</b>
如果你只是想文本内容,你可以改变print(tag)
到print(tag.string)
。
如果你想从a
标签删除属性一样onclick=""
,你可以这样做:
if isinstance(tag,BeautifulSoup.Tag) and tag.name in ('a','b','i'):
if tag.name=='a':
del tag['onclick']
print(tag)
谢谢你 - 什么办法去除的onclick =“” – ensnare 2010-12-12 21:42:31
加“tag.attrs = [ ]'打印前删除所有属性。如果你需要更多的控制,tag.attrs只是你需要的(名称,值)对列表。 – Spacedman 2010-12-12 21:57:27
嘿,这真的很有帮助,非常感谢。 – ensnare 2010-12-12 22:54:27