0

我正在尝试使用 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'' 标记

4

1 回答 1

0

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

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

于 2014-12-05T12:37:49.910 回答