如何使用Python获取请求中的响应的原始内容?

Jua*_*oto 15 python http request web python-requests

尝试requests在Python中获取HTTP响应内容的原始数据.我有兴趣通过另一个频道转发响应,这意味着理想情况下内容应尽可能保持原始状态.

这样做有什么好办法?

非常感谢!

Bri*_*ien 18

如果您正在使用requests.get调用来获取HTTP响应,则可以使用raw响应的属性.这是requests文档中的代码.

>>> r = requests.get('https://github.com/timeline.json', stream=True)
>>> r.raw
<requests.packages.urllib3.response.HTTPResponse object at 0x101194810>
>>> r.raw.read(10)
'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用`r.raw.decode_content = True`来处理`Content-Encoding` http标头. (7认同)
  • @DoronCohen您是否包含`stream = True`? (5认同)
  • 这似乎不能正常工作,我尝试了 `res.raw.data` 和 `res.raw.read(100)`,但它们都返回空。 (4认同)
  • 看起来像是`r.raw.data` (3认同)
  • 你具体说了你是否使用了“get”;这是否意味着我们不能将其用于“post”生成的响应对象? (2认同)

Tom*_*Tom 12

之后requests.get(),您可以使用r.content提取原始字节类型的内容.

r = requests.get('https://yourweb.com', stream=True)
r.content
Run Code Online (Sandbox Code Playgroud)