使用python处理HTML标记

使用python处理HTML标记,python,html,Python,Html,在HTML文件中,出现了以下情况: <span class="finereader"></span> 或 a 我想删除所有这些标签。第二个示例显示,标签下可能有一个字母(或数字,但只有1)。不应删除该字母,只能删除和以下。 是否有任何re.sub表达式可以做到这一点? 感谢您的帮助。您可能希望查看而不是使用正则表达式来完成此任务 然后您可以这样做:(在本例中使用字符串作为html文件) 从bs4导入美化组 html_doc=“” 样品 A. B """ 汤=美汤(

在HTML文件中,出现了以下情况:

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

a
我想删除所有这些标签。第二个示例显示,标签下可能有一个字母(或数字,但只有1)。不应删除该字母,只能删除
和以下
。 是否有任何re.sub表达式可以做到这一点? 感谢您的帮助。

您可能希望查看而不是使用正则表达式来完成此任务

然后您可以这样做:(在本例中使用字符串作为html文件)

从bs4导入美化组
html_doc=“”
样品
A.
B
"""
汤=美汤(html\U文档)
对于汤中的span。查找所有('span'):
打印(span.string)
#输出:
#a
#b
对于此任务,您可能希望查看而不是使用正则表达式

然后您可以这样做:(在本例中使用字符串作为html文件)

从bs4导入美化组
html_doc=“”
样品
A.
B
"""
汤=美汤(html\U文档)
对于汤中的span。查找所有('span'):
打印(span.string)
#输出:
#a
#b
另一种解决方案使用:

另一个解决方案使用:


难道不能使用字符串或lxml吗?因为我使用lxml…如果我理解正确,BS只是lxml的替代品,不是吗?@MarkF6:
BeautifulSoup
可以使用多个解析器,其中一个是
lxml
。看一看,非常感谢。这起作用了。但我还有最后一个问题:BS产生的布局(带有所有的移位)对我没有帮助;事实上,我根本不想换班。使用BS是否有可能实现这一点?@MarkF6:使用
print(soup)
而不是
print(soup.prettify())
。使用字符串或lxml难道不可能吗?因为我使用lxml…如果我理解正确,BS只是lxml的替代品,不是吗?@MarkF6:
BeautifulSoup
可以使用多个解析器,其中一个是
lxml
。看一看,非常感谢。这起作用了。但我还有最后一个问题:BS产生的布局(带有所有的移位)对我没有帮助;事实上,我根本不想换班。使用BS是否有可能实现这一点?@MarkF6:使用
print(soup)
而不是
print(soup.prettify())
<span class="finereader">a</span>
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
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())