有没有人有一些示例代码来说明如何使用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)

如果要从onclick=""标记中删除诸如a之类的属性,则可以执行以下操作:
if isinstance(tag,BeautifulSoup.Tag) and tag.name in ('a','b','i'):
    if tag.name=='a':
        del tag['onclick']
    print(tag)

关于python - 使用Beautiful Soup从字符串中剥离html标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4423953/

10-10 21:51
查看更多