这是我在stackoverflow.com上的第一篇文章,我有一个疑问,我的Python3程序在PyDev-for-Eclipse控制台中显示的输出
我正在使用: Python 3.4- PyDev-for-Eclipse- Python模块:request,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
答案 0 :(得分: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相关的内容,但偶然发现了这一点,以为我会解释为什么您会看到这种行为:)