美丽的人.孩子或在标签之间没有空格的情况



我希望所有标签的孩子都没有标签之间的空格。但是BeautifulSoups .contents.children也返回标签之间的空格。

from bs4 import BeautifulSoup
html = """
<div id="list">
  <span>1</span>
  <a href="2.html">2</a>
  <a href="3.html">3</a>
</div>
"""
soup = BeautifulSoup(html, 'html.parser')
print(soup.find(id='list').contents)

此打印:

['n', <span>1</span>, 'n', <a href="2.html">2</a>, 'n', <a href="3.html">3</a>, 'n']

相同
print(list(soup.find(id='list').children))

我想要的:

[<span>1</span>, <a href="2.html">2</a>, <a href="3.html">3</a>]

有什么办法告诉美丽的小组仅返回标签并忽略空格?

文档对此主题不是很有帮助。示例中的HTML不包含标签之间的任何空格。

确实剥夺了标签之间所有空格的HTML解决我的问题:

html = """<div id="list"><span>1</span><a href="2.html">2</a><a href="3.html">3</a></div>"""

使用此html我在标签之间获得没有空格的标签,因为标签之间没有空格。但是我希望使用Beautifoulsoup,这样我就不必在HTML源代码中弄乱。我希望Beautifulsoup为我做到这一点。

另一个解决方法可能是:

print(list(filter(lambda t: t != 'n', soup.find(id='list').contents)))

,但这似乎是片状。是否保证始终是'n'


重复标记旅的注释:

有很多问题询问有关美丽的人和空格。大多数人都在询问从"渲染文本"中摆脱空格。

例如:

美丽的套件 - 摆脱段落/空白段/线路休息

从Python Beautifulsoup的输出中删除新线' n'

两个问题都需要文本而没有空格。我想要没有空格的标签。那里的解决方案不适用于我的问题。

另一个示例:

使用Beautifulsoup

与whitespace的类正则表达式

这个问题是关于类属性中的空格。

beautifulsoup具有.find_all(True),它返回所有标签,而没有标签之间的空格:

from bs4 import BeautifulSoup
html = """
<div id="list">
  <span>1</span>
  <a href="2.html">2</a>
  <a href="3.html">3</a>
</div>
"""
soup = BeautifulSoup(html, 'html.parser')
print(soup.find(id='list').find_all(True))

打印:

[<span>1</span>, <a href="2.html">2</a>, <a href="3.html">3</a>]

recursive=False结合,您只会得到直接的孩子而不是孩子的孩子。

证明我将<b>添加到第二个孩子中。那将是一个孙子。

from bs4 import BeautifulSoup
html = """
<div id="list">
  <span>1</span>
  <a href="2.html"><b>2</b></a>
  <a href="3.html">3</a>
</div>
"""
soup = BeautifulSoup(html, 'html.parser')
print(soup.find(id='list').find_all(True, recursive=False))

使用recursive=False打印:

[<span>1</span>, <a href="2.html"><b>2</b></a>, <a href="3.html">3</a>]

使用recursive=True打印:

[<span>1</span>, <a href="2.html"><b>2</b></a>, <b>2</b>, <a href="3.html">3</a>]

Trivia:现在我有了解决方案,我在stackoverflow中找到了另一个看似无关的问题,并在评论中隐藏了解决方案:

为什么美丽的小伙子包含无名元素以及预期的标签

相关内容

最新更新