为什么.find()不能在python 3中使用urllib.request.urlopen()?

时间:2012-05-02 04:38:02

标签: python python-3.x

尝试从python 2中的urllib转换到python 3.我可以使用.urlopen()输出html源代码但我无法使用.find()方法对其进行索引。

import urllib.request
fh = urllib.request.urlopen("http://stackoverflow.com")
html = fh.read()
fh.close()

print(html.find("<p>"))

我收到类型错误。我知道它返回了一个字节数组,但我对这实际意味着什么很模糊。我已经尝试了一些过时的问题like this。我的问题是:

是否有一种简单的本机方法可以将URL的页面源作为字符串在python 3中获取?

1 个答案:

答案 0 :(得分:3)

使用html.decode('utf-8')(或恰当的编码)来获取str对象.find()

.decode()用于获取一组平坦的字节并将它们(通过反转字符编码,如UTF-8)转换为一串实际代码点(可显示的符号)。