python - 从 html 代码中过滤掉空的 <span> 标签

标签 python html regex filter

我有一些 html 代码,其中有很多行我想删除,看起来像这样

<span style="position:absolute; border: black 1px solid; left:94px; top:600px; width:6px; height:10px;"></span>

现在还有 span 标签,它们之间有文本,我想保留。

我想用python的re.sub函数删除那些无用的span标签。我写了这个但是它不起作用

html_code_filtered = re.sub('<span*></span>', '', html_code)

我想我在正则表达式中遗漏了一些正确匹配行的内容?

最佳答案

您可以使用类似 BeautifulSoup 的 HTML 解析器删除没有文本的 span 元素。

工作示例:

from bs4 import BeautifulSoup

data = """
<div>
    <span style="position:absolute; border: black 1px solid; left:94px; top:600px; width:6px; height:10px;"></span>
    <span>useful text</span>
    <span></span>
</div>
"""

soup = BeautifulSoup(data, "html.parser")

# find and remove "span" elements with empty contents
for useless in soup.find_all("span", text=lambda text: not text):
    useless.extract()

print(soup.prettify())

打印(如您所见,没有内容的 span 元素已被删除):

<div>
 <span>
  useful text
 </span>
</div>

关于python - 从 html 代码中过滤掉空的 <span> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34242499/

相关文章:

regex - 用于提取多行 block 的 perl 正则表达式

Javascript 正则表达式只允许最多 10 位数字,不允许字符串和特殊字符

python - 在 Python 上将数据写入 CSV 会将所有数据写入第一列

html - 如何使用 css 覆盖 element.style

jquery - 如何使用 jQuery 的切换返回元素状态?

jquery - 将 HTML 表单作为 JQuery 对话框弹出时,如何避免自动关注第一个输入字段?

regex - Postgresql 正则表达式_替换

python - OpenStack Python Nova API 获取特定限制值?

python - 如何解决Python中的编码错误

python - 在 Python 的 POST 请求中传递 '+' 字符