繁体   English   中英

使用Beautiful Soup从字符串中去除html标签

[英]Using Beautiful Soup to strip html tags from a string

有没有人有一些示例代码说明如何使用Python的Beautiful Soup从一串文本中删除除一些标签之外的所有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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM