Python requests模块
创始人
2024-05-26 05:45:45

Python requests 模块,该模块主要用来发 送 HTTP 请求。

一、requests 方法

在这里插入图片描述

url 请求 url。

data 参数为要发送到指定 url 的字典、元组列表、字节或文件对象。

json 参数为要发送到指定 url 的 JSON 对象。

args 为其他参数,比如 cookies、headers、verify等。

示例:

# 导入 requests 包
import requests# 发送请求
x = requests.get('https://www.baidu.com/')# 返回 http 的状态码
print(x.status_code)# 响应状态的描述
print(x.reason)# 返回编码方式
print(x.apparent_encoding)

输出结果:

200
OK
utf-8

1、get方法详解

requests.get(url, params, args)中,除了必传的请求地址url外,还有1个默认参数params,这个参数会对url进行处理。一般get方式请求,参数是通过url?key1=value1&key2=value2....进行拼接的(即参数字段和值是=连接,参数之间连接符是&,接口路径通过?来连接参数内容),如果url已经带有参数,则可以不用params参数,如果url没有带参数,则requests.get()会将params的内容按照拼接逻辑拼接到url后。args 为其他参数,比如 cookies、headers、verify等。

import requests
# url未携带参数数据
r1 = requests.get("http://httpbin.org/get?name=gemey&age=22")
print("----------url未携带params参数,请求数据放到url地址中----------")
print(r1.text)# url携带参数数据
r2 = requests.get("http://httpbin.org/get", params={"name": "gemev", "age": 22})
print("\n----------url携带params参数,请求数据放到params中----------")
print(r2.text)# url携带参数数据中有列表
r3 = requests.get("http://httpbin.org/get", params={"name": "gemev", "age": [22, 45]})
print("\n----------url携带params参数,请求数据放到params中,数据中有列表----------")
print(r3.text)

2、post方法详解

如果想上传的数据较大,或者上传的数据对服务器方的数据库、文件等内容有修改,一般使用Post请求,post请求上传数据的方式有:表单、Json、文件等。

2.1、表单

post请求上传表单数据时,是通过data参数上传的,入参的数据是字典对象(dict)

格式:post(url, data, args)

import requestsurl = 'http://httpbin.org/post'
data = {'name': 'jack','age': 23
}
r = requests.post(url, data=data)
print(r.text)

如果不定义Content-Type,会被默认设置为application/x-www-form-urlencoded

2.2、Json

json也是post请求经常用到的数据上传格式,如果上传的数据是json格式,需要将python字典对象通过json参数传入

格式:post(url, json, args)

# -*- coding: utf-8 -*-
import requestsurl = 'http://httpbin.org/post'
data = {'name': 'jack','age': 23
}
r = requests.post(url, json=data)
print(r.text)

如果不定义Content-Type,Content-Type会被默认设置为application/json

2.3、文件上传

2.4、其他数据类型

Post请求不止上传文件、发送form、json数据,还支持html、xml等数据,这些数据一般通过data参数传入,但是需要在请求头的Content-Type字段申明数据类型。

3、定义header

headers中有很多内容,他们是以键对的形式定义出来,在request中,则是用过headers=headers来区分,前面为关键字headers,后面为自定义的头信息变量,变量名为headers

# -*- coding: utf-8 -*-
import requestsurl = 'http://httpbin.org/post'
headers = {'Content-Type': 'application/json;charset=UTF-8', 'User-Agent':'self-defind-user-agent'}
data = {'name': 'jack','age': 23
}
r = requests.post(url, json=data, headers=headers)
print(r.text)

4、定义cookie

很多接口请求需要附带cookies,服务端校验成功后才会返回正常的响应数据。

requests提供2种传递Cookie的方式:

方式一:通过请求头headers信息传递:headers参数中包含Cookie键值对(为了让服务端正常识别,cookie的值格式尽量为:key1=value1; key2=value2; xxx; keyn=valuen,)

# -*- coding: utf-8 -*-
import requestsurl = 'http://httpbin.org/post'
headers = {'Cookie': 'key1=value1;key2=value2', 'Content-Type': 'application/json;charset=UTF-8'}
data = {'name': 'jack','age': 23
}
r = requests.post(url, json=data, headers=headers)
print(r.text)

方式二:通过关键字参数cookies传递:cookies参数被传入字典,字典数据中的每个键值代表了一个cookie,键表示cookie的变量名称,值为对应的cookie值。

# -*- coding: utf-8 -*-
import requestsurl = 'http://httpbin.org/post'
headers = {'Content-Type': 'application/json;charset=UTF-8'}
cookies = {'c1': 'cookie_1', 'c2': 'cookie_value2'}
data = {'name': 'jack','age': 23
}
r = requests.post(url, json=data, headers=headers, cookies=cookies)
print(r.text)

5、超时设置

6、代理设置

7、认证

8、会话

二、 response 对象

每次调用 requests 请求之后,会返回一个 response 对象,该对象包含了具体的响应信息。,可以通过如下方法获取对应的响应信息,示例同上。
在这里插入图片描述

相关内容

热门资讯

Meta正式入局个人AI代理赛... 财联社9月10日讯(编辑 赵昊)Meta Platforms推出了一款全新的人工智能代理,旨在帮助用...
兵团20名优秀教师获评特级教师 本报乌鲁木齐讯(全媒体记者 陈琼 常丫丫) 近日,兵团教育局、兵团人力资源和社会保障局联合发布...
打好政策“组合拳” 托起群众... 本报乌鲁木齐讯(全媒体记者 陈琼) “近期看房客户明显增多,叠加住房消费补贴政策带动,成交态势向...
2026显示器排行榜 高清IP... 深夜赶PPT、清晨抢网课、周末剪Vlog、睡前追剧刷番——对大学生而言,一块靠谱的显示器早已不是外设...
最新八G显卡销量排行榜 远程G... 清晨九点,城市写字楼里灯光渐次亮起,一台搭载专业显卡的台式机正悄然加载远程GPU服务——它不追求4K...