python - 从 HTML 标签中包含的一系列字符串和不带标签的字符串中提取文本

标签 python python-3.x beautifulsoup

考虑以下 HTML:

<li>
  <a href="url">
    <b>This</b>
    " is "
    <b>a</b>
    " test "
    <b>string</b>
    "!"
  </a>
</li>

我想提取 <a> 之间的所有文本标签除了 "!" 。换句话说,第一个开头 <b> 之间包含的文本最后关闭</b> :This is a test string .

from bs4 import BeautifulSoup

html = '''
<li>
<a href="url">
<b>This</b>
" is "
<b>a</b>
" test "
<b>string</b>
"!"
</a>
</li>
'''
soup = BeautifulSoup(html)
anchor = soup.a

请注意 <b> 的数量标签和没有标签的字符串有所不同,所以 nextnext_sibling行不通。

有更简单的方法吗?

编辑: 理想情况下,我想要一种即使在最后一个 </b> 之后有多个未包含在标签中的字符串也能工作的方法。 .

最佳答案

尝试下面的代码

result = ''.join([i.strip().replace('"', '') for i in anchor.strings if i.strip()][:-1])
print(result)

输出

'This is a test string'

关于python - 从 HTML 标签中包含的一系列字符串和不带标签的字符串中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59945689/

相关文章:

python - 在 Mac 上安装 Python 3.3

python - 如何使用Python Beautiful Soup获取html的标签名称?

python - 如何将 float 打印到 n 位小数,包括尾随 0?

python - 使用 Langchain 加载和矢量化多个 PDF 的问题

python - 如何从以键为列和行索引的字典构造pandas DataFrame

python - 我可以更改 BeautifulSoup 将 XML 标签转换为小写的行为吗?

python - 使用 Beautiful Soup 解析 html 表单输入标签

Python 在嵌套字典中搜索键/值

python-3.x - 为什么 Canvas 滚动条在 tkinter 窗口中被禁用?

python-3.x - 在默认的 Tensorflow docker 容器中将 Jupyter 更新为 Python 3.4