当我分割一些HTML源代码时,为什么会出现b'(有时是b'')[Python]

Oli*_*ver 2 python parsing python-3.x

我对Python和编程很新.我做了一些教程,通过一本非常好的书大约2/3.话虽这么说,我一直试图通过在std lib中尝试一些事情来更熟悉Python和编程.

据说我最近遇到了一个奇怪的怪癖,我确信这是我自己的错误或非"pythonic"使用urllib模块(使用Python 3.2.2)的结果

import urllib.request

HTML_source = urllib.request.urlopen(www.somelink.com).read()

print(HTML_source)
Run Code Online (Sandbox Code Playgroud)

当这个位通过活动解释器运行时,它返回somelink的HTML源代码,但是它以b'作为前缀

b'<HTML>\r\n<HEAD> (etc). . . .
Run Code Online (Sandbox Code Playgroud)

如果我通过空格将字符串拆分成一个列表,它会为每个项目添加前缀b'

我并没有真正想要完成一些特定的事情,只是想让自己熟悉std lib.我想知道为什么这个b'有前缀

还有奖励 - 有没有更好的方法来获取HTML源而不使用第三方模块.我知道所有那些关于不重新发明轮子的爵士乐,但是我正试图通过"构建自己的工具"来学习

提前致谢!

Ray*_*ger 7

"b"前缀表示类型是字节而不是str.要将字节转换为文本,请使用decode方法并命名相应的编码.编码通常位于"Content-Type"标题中:

>>> u = urllib.request.urlopen('http://cnn.com')
>>> u.getheader('Content-Type')
'text/html; charset=UTF-8'
>>> html = u.read().decode('utf-8')
>>> type(html)
<class 'str'>
Run Code Online (Sandbox Code Playgroud)

如果在标题中找不到编码,请尝试使用utf-8作为默认值.