使用python处理HTML标记

时间:2013-09-01 21:31:28

标签: python html

在HTML文件中,我发生了以下事件:

<span class="finereader"></span>

<span class="finereader">a</span>

我想删除所有这些标签。第二个例子表明标签下面可能有一个字母(或数字,但只有1)。不应删除该字母,仅限<span class="finereader">和以下</span>。 是否有任何re.sub表达式可以做到这一点? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

使用BeautifulSoup的另一种解决方案:

from bs4 import BeautifulSoup

soup = BeautifulSoup(open('htmlfile'))

for elem in soup.find_all('span', class_='finereader'):
    elem.replace_with(elem.string or '') 

print(soup.prettify())

答案 1 :(得分:1)

您可能希望查看beautifulsoup而不是使用正则表达式来执行此任务。

然后你可以这样做:(在这个例子中使用一个字符串作为html文件)

from bs4 import BeautifulSoup

html_doc = """
<html>
<head>
<title>Sample</title>
</head>
<body>
<span class="dummy">a</span>
<span>b</span>
</body>
</html>
"""
soup = BeautifulSoup(html_doc)
for span in soup.find_all('span'):
    print(span.string)

# output:
# a
# b