python urllib request urlopen请求网页返回bytes类型
我在学习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'>
''
请大佬指点,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首次调用
read()
时有返回,之后的调用一直返回b''
因此,从你的第二个
f.read()
开始,都是返回b''
了。这样代码在我这能正确获取网页并解码:
http.client.HTTPResponse.read
是这样定义的:第一次
read()
时,在self._readall_chunked()
中self.fp
被置为None
,并关闭了self.fp
。因此再次调用
read()
时,直接返回了b''
。不建议使用 urllib 库,推荐 requests 库