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

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 对象,该对象包含了具体的响应信息。,可以通过如下方法获取对应的响应信息,示例同上。
在这里插入图片描述

相关内容

热门资讯

创业板人工智能ETF南方(15... 7月4日,创业板人工智能ETF南方(159382)开盘涨0.09%,报1.124元。创业板人工智能E...
A500增强ETF摩根(563... 7月4日,A500增强ETF摩根(563550)开盘跌0.10%,报1.021元。A500增强ETF...
中证A500增强ETF(159... 7月4日,中证A500增强ETF(159226)开盘涨0.00%,报1.023元。中证A500增强E...
潮宏基股价跌5.03%,新疆前... 7月4日,潮宏基跌5.03%,截至发稿,报13.96元/股,成交5209.93万元,换手率0.42%...
国企一带一路ETF(51599... 7月4日,国企一带一路ETF(515990)开盘跌0.23%,报1.280元。国企一带一路ETF(5...
有什么网络游戏好玩? 有什么网络游戏好玩?如题冒险岛SF,,哈哈现在战争网游使命召唤online挺好玩的。它是一款免费的现...
江苏新能涨2.97%,成交额4... 7月4日,江苏新能盘中上涨2.97%,截至09:35,报14.57元/股,成交4224.26万元,换...
康平科技跌2.19%,成交额1... 7月4日,康平科技盘中下跌2.19%,截至09:35,报26.77元/股,成交1663.84万元,换...
沪深300ETF博时(5151... 7月4日,沪深300ETF博时(515130)开盘涨0.08%,报1.274元。沪深300ETF博时...
华钰矿业跌2.86%,成交额9... 7月4日,华钰矿业盘中下跌2.86%,截至09:35,报18.35元/股,成交9573.58万元,换...