我在学习urllib这个库,使用以下代码请求面度的主页,返回的结果为<class 'bytes'>,我尝试了多种方法进行解码,均不成功(报错或为空)
以下为代码:
from urllib import request
f = request.urlopen('http://www.baidu.com/')
print(f.read())
print(type(f.read()))
x = f.read()
print(x.decode(encoding='utf-8'))
以下为输出:
……n</body>n</html>nrnrnrnnrn'
<class 'bytes'>
''
请大佬指点,谢谢!
首次调用
read()
时有返回,之后的调用一直返回b''
因此,从你的第二个
f.read()
开始,都是返回b''
了。这样代码在我这能正确获取网页并解码:
http.client.HTTPResponse.read
是这样定义的:第一次
read()
时,在self._readall_chunked()
中self.fp
被置为None
,并关闭了self.fp
。因此再次调用
read()
时,直接返回了b''
。