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源而不使用第三方模块.我知道所有那些关于不重新发明轮子的爵士乐,但是我正试图通过"构建自己的工具"来学习
提前致谢!
"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作为默认值.