BeautifulSoup>美化()方法显示整个输出在一行中仅

问题描述 投票:0回答:1

这是我对stackoverflow.com的第一篇文章,我有w.r.t我Python3程序显示的PyDev换Eclipse控制台输出问题

我使用:Python的3.4 --- PyDev的换--- Eclipse的Python模块:请求,BS4,pprint

每当我运行下面的代码,

html_content = response.content
bs = BS(html_content,'html.parser')
page_html = bs.prettify(encoding='utf-8')
print(page_html)

如下面所示的整个输出被显示在单独的一行中,而不是显示在一个相当打印格式

b'<!DOCTYPE doctype html>\n<html class="no-js" lang="en-US">\n <head>\n  <meta charset="utf-8"/> ...<entire output>...

我还试图与pprint()从pprint模块的方法。不过,我得到了相同的结果单独显示在一个系,即整个输出

我怎么显示在一个漂亮的打印格式的O / P?

谢谢,skambl

beautifulsoup python-3.4
1个回答
0
投票

当您指定encoding说法,你问它来输出编码。这给你一个bytes对象,这是由得到打印的字符串之前领先b识别。 b'some value'打印到控制台意味着你打印的bytes对象(在python 3)。

选项1

print(page_html.decode('utf-8'))

既然你问它编码为utf-8,那是你应该decode它。

选项2

好像你其实想一个字符串(不是bytes对象)。所以只是做

page_html = bs.prettify()  # no encoding parameter

此外,您可能需要阅读Output formatters一节有更多的事情可以与输出做。

我知道你问这个是很久以前,但希望的答案仍然是有帮助的(特别是,明知领先b'...'bytes对象,你需要decode说)!我正在寻找的东西相关的BS4和偶然发现了这一点,以为我会解释为什么你看到这个行为:)

© www.soinside.com 2019 - 2024. All rights reserved.