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

时间:2013-06-04 17:25:04

标签: python http web request python-requests

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

这样做的好方法是什么?

非常感谢!

3 个答案:

答案 0 :(得分:16)

如果您使用requests.get调用来获取HTTP响应,则可以使用响应的raw属性。以下是requests docs的代码。

>>> 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'

答案 1 :(得分:7)

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

r = requests.get('https://yourweb.com', stream=True)
r.content

答案 2 :(得分:-1)

要添加到@brien答案中,如docs中所述:

但是,通常,您应该使用这种模式来保存流式传输到文件中的内容:

with open(filename, 'wb') as fd:
   for chunk in r.iter_content(chunk_size=128):
      fd.write(chunk)

使用Response.iter_content将处理很多您直接使用Response.raw时将不得不处理的事情。流式下载时,以上是检索内容的首选和推荐方法。请注意,chunk_size可以自由调整为更适合您的用例的数字。

该模式不仅具有上述优点,而且在内存有限的环境中获取数据也是很好的选择。