尝试在Python中以requests
获取HTTP响应内容的原始数据。我有兴趣通过另一个频道转发回复,这意味着理想情况下内容应尽可能保持原始状态。
这样做的好方法是什么?
非常感谢!
答案 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可以自由调整为更适合您的用例的数字。
该模式不仅具有上述优点,而且在内存有限的环境中获取数据也是很好的选择。