BeautifulSoup在每个打开和关闭标签前后添加额外的空格

时间:2018-11-21 11:03:07

标签: python html beautifulsoup

这是示例程序:

from bs4 import BeautifulSoup
import HTMLParser

soup = BeautifulSoup('', 'html.parser')

html = soup.new_tag('html')
head = soup.new_tag('head')
body = soup.new_tag('body')

html.insert(0, head)
html.insert(1, body)
soup.insert(0, html)

blockquote = soup.new_tag('blockquote')
sourceStr = "This is <i>My Website Title</i>, just for example."
blockquote.insert(0, BeautifulSoup(HTMLParser.HTMLParser().unescape(sourceStr), 'html.parser'))
soup.body.insert(1, blockquote)

print soup.prettify()

它生成以下输出:

<html>
   <head>
   </head>
   <body>
      <blockquote>
         This is
         <i>
         My Website Title
         </i>
         , just for example.
      </blockquote>
   </body>
</html>

实际上在浏览器中显示为:

  

例如,这是我的网站标题

“我的网站标题”和以下逗号之间添加了多余的空格。如何避免BeautifulSoup添加多余的空格?

如果不使用任何字符串操作,是否可以使用BeautifulSoup方法处理此问题?

1 个答案:

答案 0 :(得分:1)

如果您要创建自己不想打印的tag,则可以在创建preserve_whitespace_tags之后对其进行手动修补,如下所示:

blockquote = soup.new_tag('blockquote')
blockquote.preserve_whitespace_tags.add('blockquote')

我认为这可能是您想要的最接近的东西,而无需编写极其复​​杂的解析器。