Python编码的字符串仍然是二进制格式

时间:2014-12-05 11:35:44

标签: python-3.x character-encoding beautifulsoup urllib3

我正在尝试使用urllib3和漂亮的汤来抓取一些网站。 Python 3编码/解码让我感到沮丧。这是我的代码

r = http.request('GET', 'https://www.************************.jsf')

if(r.status == 200):
    page = r.data.decode('utf-8')
    soup = BeautifulSoup(page)  

    print(soup.prettify())
    #This prints - [Decode error - output not utf-8]
    #              [Decode error - output not utf-8]

    print(soup.prettify().encode('utf-8'))
    #This prints the data but with binary mark
    # b'<!DOCTYPE html PUBLIC "-//W3C//D.......
    #..........................................'

由于我在调用美味汤之前完成了解码r.data.decode('utf-8'),为什么我需要再次对其进行编码,为什么它仍然显示b&#39;&#39;甚至在将其转换为字符串后标记

1 个答案:

答案 0 :(得分:0)

b'xxx'是二进制类型值的表示(字节序列 - 这是.encode()的自然结果。print()函数自动将对象转换为其表示形式它不是一个字符串。

尝试将调试infor写入文件。输出到支持某些字符集/编码的控制台时,print函数可能会出现问题。