python - 美汤。如何查找包含在文本中的标签
问题描述
我有这样的结构:
<p>blablalba<a href='somelink'>blabla</a></p>
我需要找到放置在文本内的任何标签,而不仅仅是“a”。例如
<p>blablalba<strong>blabla</strong>blalba</p>
我怎样才能做到这一点?
解决方案
要从“双方”查找具有文本兄弟的标签,您可以使用自定义 lambda 函数:
from bs4 import BeautifulSoup
html_doc = """
<p>blablalba<a href='somelink'>NOT FROM BOTH SIDES</a></p>
<p>blablalba<a href='somelink'>I WANT THIS</a>xxx</p>
<p>blablalba<strong>I WANT THIS</strong>blalba</p>
<p><strong>NOT FROM BOTH SIDES</strong>blalba</p>
<p>blalba<strong>NOT FROM BOTH SIDES</strong></p>
"""
soup = BeautifulSoup(html_doc, "html.parser")
def find_tags(t):
prv = t.find_previous_sibling(text=True)
nxt = t.find_next_sibling(text=True)
return (prv and nxt) and (prv.strip() and nxt.strip())
for tag in soup.find_all(find_tags):
print(tag)
印刷:
<a href="somelink">I WANT THIS</a>
<strong>I WANT THIS</strong>
推荐阅读
- javascript - 如何在节点 js 中将 Promise 转换为异步等待
- javascript - 为什么每当我更新状态时,它保存状态变量看起来就像是一个渲染?
- swiper - 我试图使用 swiper 但它不起作用
- oracle - 如何在oracle forms 12c中创建从现有表单调用表单的快捷方式
- resteasy - 如何让 RestEasy 为错误的查询参数生成 http 错误 400
- azure - 设置高可用性基础架构
- javascript - 顶点图表:在条形上方显示 Y 轴标签和数据标签值
- excel - 变量范围不被识别为工作表的属性
- flutter - 从主线程使用多个隔离时面临的问题
- git - 如何解决 git commit 错误 - 错误 - :类型必须是 [build, core, ci,docs, feat, fix, perf, revert, style, test] 之一