This question already has answers here:
BeautifulSoup: do not add spaces where they matter, remove them where they don't
(3个答案)
12个月前关闭。
这是示例程序:
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方法(如果有的话)来处理此问题?

最佳答案

如果您正在创建一个您不希望漂亮打印的tag,则可以在创建后手动修补它的preserve_whitespace_tags,如下所示:

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

我认为这可能是最接近您想要的东西,而不必编写非常复杂的解析器。

10-05 20:40