【问题标题】:beautifulsoup ignores a whitespacebeautifulsoup 忽略了一个空格
【发布时间】:2020-01-08 03:05:12
【问题描述】:

假设我有Hello world.(Hello 之前有一个空格)作为输入,然后我运行:

soup = bs(input, "lxml")

Hello world. 之前的初始空格在输出中被忽略。如何在上述输入之前保留空格?

我尝试了其他解析器,例如 xml, html.parser。但是,对我来说,lxml 工作得很好,除了这种情况。

如果有人能就如何避免这种情况提出建议,那将会很有帮助。

例子:

>>> from bs4 import BeautifulSoup as bs
>>> soup = bs(' Hello world.', "lxml")
>>> soup.p
<p>Hello world.</p>
>>> print(soup)
<html><body><p>Hello world.</p></body></html>

【问题讨论】:

  • bs4.BeautifulSoup() 保留空白。你的例子有缺陷。
  • @accdias 您能否详细说明并提出建议?
  • 试试soup = bs('&lt;p&gt; Hello world.&lt;p&gt;', 'lxml'),你会看到空间就在那里。换句话说,当你解析实际网页时,任何标签内容内的任何现有空格都将被保留。
  • 或者更好的是soup = bs('&lt;p&gt; Hello world.&lt;p&gt;No trailing space here', 'lxml'),然后是soup.find_all('p')

标签: python-3.x beautifulsoup


【解决方案1】:

您必须将字符串放在&lt;p&gt; or &lt;pre&gt; 标记中以保留空格。

代码应该是这样的 -

>>> from bs4 import BeautifulSoup as bs
>>> soup = bs('<p> Hello world.</p>', "lxml")
>>> soup.p
<p> Hello world.</p>
>>> print(soup)
<html><body><p> Hello world.</p></body></html>

【讨论】:

  • 但是,这不是处理场景的通用方法。我可能会得到一些有空格和没有空格的例子..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多