使用requests请求后的响应内容

使用Requests进行get请求或post请求后,requests会返回一个Response对象;

这个Response对象包含许多我们需要的东西;

response = requests.get('https://www.baidu.com')

状态码

Response对象有一个status_code属性,它表示服务器返回的状态码:

print(response.status_code)

200表示服务器成功接受了我们的请求并返回;404表示请求的页面不存在;

返回的内容

你可以使用text属性获取服务器响应的内容:

response.text

使用text属性读取的内容都已经被Requests自动解码。大多数的字符集都能被Requests正确的解码。

请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问response.text之时,Requests 会使用其推测的文本编码。你可以找出 Requests 使用了什么编码,并且能够使用response.encoding属性来改变它:

如果你改变了编码,每次访问.text时,Requests都会使用.encoding的新值;

如果你创建了自己的编码,你应该使用response.content来获取未被解码的二进制内容;

Requests会自动解码使用gzip或deflate进行编码压缩的数据。

读取JSON响应内容

Requests内置了一个JSON解码器,是你读取JSON内容变得非常简单:

response.json()

json()方法会返回一个JSON对象;如果JSON解码失败,它会抛出一个ValueError: No JSON object could be decoded异常

原始RAW流

如果你想获取服务器返回的原始数据流,你可以使用response.raw,它将返回一个HTTPResponse对象,你可以使用该对象的read()方法读取内容。

如果你确实要这么干,你应该在最初的请求中设置stream=True

response = requests.get('https://www.baidu.com/',stream=True)
response.raw.read(10)

当数据过大时,应使用response.iter_content()方法来处理。

将完整的数据保存为文件:

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

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/requests-response.html

分类: 计算机技术
推荐阅读:
Python Qt库PySide和PyQt哪个好? Qt是一个跨平台的GUI程序开发框架;使用Qt可以轻松的开发出GUI程序;而想在Python中创建Qt应用,则需一套用于调用Qt API的库;这里主要介绍两个比较成熟的python Qt库,PyQt和PySide;
PySide6:No module named 'QWebEngineView' 解决方法 如果你在使用PySide6时碰到No module named 'QWebEngineView' 或 No module named 'PySide6.QtWebEngineWidgets' 的错误提示,请将PySide6更新到最新版本,因为该组件在某些比较老的版本还未得到支持;
如何隐藏WordPress后台地址,保护好你的菊花 默认情况下,Wordpress 的默认后台地址为:http://yourdomain.com/wp-login.php,黑客可以通过这个页面进行暴力穷尽破解,直到破解出你的密码。不论你的密码强度如何,这紧会浪费服务器资源,且网站也会留下安全隐患。
Linux终端模拟打字(逐字符显示) 在Linux系统下,你可以使用一条命令来实现像电影里的效果,让字符逐个显示:
Python slice()函数 在 Python 中,slice() 函数用于创建一个 slice 对象,该对象可以用于对序列进行切片操作。slice() 函数接受三个参数:起始位置、结束位置和步长。这些参数都是可选的。
xxxx is not in the sudoers file. This incident will be reported. 解决方法 使用sudo命令时出现xxxx is not in the sudoers file. This incident will be reported. 这里的xxxx是你的用户名;出现这个提示通常是用户名没有写入到sudoers文件中;