This question already has answers here:
BeautifulSoup: do not add spaces where they matter, remove them where they don't
(3个答案)
12个月前关闭。
这是示例程序:
它生成以下输出:
在浏览器中实际显示如下:
例如,这是我的网站标题。
在“我的网站标题”和下面的逗号之间添加了额外的空格。如何通过美化组避免添加额外的空格?
不使用任何字符串操作,是否有方法使用BeautifulSoup方法(如果有的话)来处理此问题?
我认为这可能是最接近您想要的东西,而不必编写非常复杂的解析器。
(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