python之requests库分析

Posted qqxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之requests库分析相关的知识,希望对你有一定的参考价值。

1.requests库发送请求时,params和data、json的区别

 params的时候之间接把参数加到url后面,只在get请求时使用,data、json是用在post请求,json是传递的json格式的数据

params: (optional) Dictionary or bytes to be sent in the query string for the :class:`Request`.
params是一个字典或者bytes类型,用来查询
data: (optional) Dictionary or list of tuples ``[(key, value)]`` (will be form-encoded), bytes, or file-like object to send in the body of the :class:`Request`.
data可以是一个字典或者元组或者bytes或者文件对象,用在请求的body
json: (optional) json data to send in the body of the :class:`Request`.
json用于请求body,且传输的是json格式数据

2.requests库响应结果content和text、json区别
text:
Content of the response, in unicode 可以接收文本格式的响应报文,unicode编码
json:Returns the json-encoded content of a response, if any
注意:If the response body does not contain valid json 如果响应body不是json格式的会报错,所以只有当响应body是json格式才可以用此方式接收响应报文
content:Content of the response, in bytes  接收bytes格式的报文,一般用来接收图片或者文件二进制
text、json是属性方法,调用不需要加(),而json是普通方法,调用需要加()
response.content
response.text
response.json()

requests库response 响应内容
r.url                      #获取请求url
r.encoding                       #获取当前的编码
r.encoding = utf-8             #设置编码
r.text                           #以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码。
r.content                        #以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。

r.headers                        #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None

r.status_code                     #响应状态码
r.raw                             #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read()   
r.ok                              # 查看r.ok的布尔值便可以知道是否登陆成功
 #*特殊方法*#
r.json()                         #Requests中内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常
r.raise_for_status()             #失败请求(非200响应)抛出异常

 


基本身份认证(HTTP Basic Auth)
import requests
from requests.auth import HTTPBasicAuth
 
r = requests.get(https://httpbin.org/hidden-basic-auth/user/passwd, auth=HTTPBasicAuth(user, passwd))
# r = requests.get(‘https://httpbin.org/hidden-basic-auth/user/passwd‘, auth=(‘user‘, ‘passwd‘))    # 简写
print(r.json())

 



以上是关于python之requests库分析的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫之Requests库入门

python-爬虫之requests模块介绍(登陆github)

你如何在 python 中处理 graphql 查询和片段?

7Python标准库系列之requests模块

python之requests库使用

python爬虫之requests库