【问题标题】:urllib3 HTTPResponse.read() returns empty bytesurllib3 HTTPResponse.read() 返回空字节
【发布时间】:2020-05-04 12:58:03
【问题描述】:

我正在尝试读取网站的内容,但我得到一个空字节对象 b''

import urllib3
from urllib3 import PoolManager
urllib3.disable_warnings()
https = PoolManager()

r = https.request('GET', 'https://minemen.club/leaderboards/practice/')

print(r.status)
print(r.read())

当我在网络浏览器中打开 URL 时,我看到了网站,r.status 是 200(成功)。

r.read()为什么不返回内容?

【问题讨论】:

  • 我会跳过这行urllib3.disable_warnings(),看看你是否收到任何有用的信息。
  • 在这种情况下没有警告,但您说不应该禁用警告是对的,尤其是当事情没有按预期进行时。

标签: python urllib3


【解决方案1】:

是什么让你认为这是错误的?试试下面的,你会得到更多的输出:

print(r.data)

检查HTTPResponse 以了解如何使用您获得的r 对象。

【讨论】:

  • HTTPResponse 的链接似乎已失效。请问可以更新吗?谢谢
【解决方案2】:

urllib3.response.HTTPResponse.read 应该是这样工作的。

它是由 urllib3 的一位贡献者解释的,例如 here

这是关于文档的。你不能默认使用read(),因为 默认情况下,所有内容都被消耗到data。如果你想要read() 要工作,您需要在调用urlopen 时设置preload_content=True。 想试试吗?

所以你可以简单地使用r.data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    相关资源
    最近更新 更多