一、requests介绍

  requests模块是一个用于发送HTTP请求的第三方库,其设计初衷是简化HTTP请求的发送和处理。

  与Python标准库中的urllib相比,requests提供了更直观和便捷的API,使开发者能够快速编写功能强大的HTTP客户端 

1.1安装

1 pip install requests 

 

1.2导入模块

1 import requests

 

二、发送HTTP请求 

requests模块支持多种类型的HTTP请求,包括GET、POST、PUT、DELETE等。下面将逐一介绍这些请求的用法。

  • get(url, **kwargs): 发送一个GET请求。
  • post(url, data=None, **kwargs): 发送一个POST请求,data可以是字典、字节或文件对象。
  • put(url, data=None, **kwargs): 发送一个PUT请求。
  • delete(url, **kwargs): 发送一个DELETE请求。
  • head(url, **kwargs): 发送一个HEAD请求,只获取页面的HTTP头信息。
  • options(url, **kwargs): 发送一个OPTIONS请求,获取服务器支持的HTTP方法。
  • patch(url, data=None, **kwargs): 发送一个PATCH请求。

  官网链接:http://docs.python-requests.org/en/master/

2.1 GET请求

GET请求用于从服务器获取数据。requests.get方法可以发送一个GET请求,并返回一个响应对象。

  (1.)没有请求体

   (2.)数据必须在1k之内

  (3)get请求数据会暴露在浏览器的地址栏中

在这个示例中,我向博客园发送了一个GET请求,并打印了响应的状态码和响应内容 。

2.2 POST请求

POST请求用于向服务器提交数据。requests.post方法可以发送一个POST请求,并返回一个响应对象。 

(1)数据不会出现在地址栏中
(2)数据的大小没有上限
(3)有请求体
(4)请求体中如果存在中文,会使用URL编码!

  requests.post()用法与requests.get()完全一致,特殊的是requests.post()有一个data参数,用来存放请求体数据

 1 import requests
 2 import json
 3 
 4 headers = {'Content-Type': 'application/json'}
 5 data = {
 6         "key1": "value1",
 7         "key2": "value2"
 8         }
 9 json_data = json.dumps(data)
10 response_json = requests.post('https://www.cnblogs.com/', data=json_data,headers=headers)
11 
12 print(response_json.status_code)
13 print(response_json.text)

 

2.3 PUT请求 

PUT请求用于更新服务器上的资源。requests.put方法可以发送一个PUT请求,并返回一个响应对象。

 

2.4 DELETE请求

DELETE请求用于删除服务器上的资源。requests.delete方法可以发送一个DELETE请求,并返回一个响应对象。

 

三、请求参数和头信息 

在实际应用中,通常需要在请求中包含参数和头信息。requests模块提供了便捷的方式来添加这些信息。

3.1 URL参数

可以使用params参数向URL中添加查询参数。

 

3.2 请求头 

可以使用headers参数添加自定义请求头。 

 

四、响应处理 

requests模块返回的响应对象包含丰富的信息和方法,方便我们处理HTTP响应。

# respone属性
print(respone.text)
print(respone.content)

print(respone.status_code)
print(respone.headers)
print(respone.cookies)
print(respone.cookies.get_dict())
print(respone.cookies.items())

print(respone.url)
print(respone.history)

print(respone.encoding)1
————————————————

4.1 状态码

可以通过响应对象的status_code属性获取HTTP状态码。 

1 import requests
2 
3 response = requests.get('https://www.cnblogs.com/')
4 
5 print(response.status_code)
6 print(response.text)
7 print(response.content)

 

五、文件上传和下载 

在实际应用中,常常需要上传和下载文件。requests模块提供了便捷的文件处理方法。 

5.1 文件下载

可以使用files参数下载文件。 

1 import requests
2 
3 response = requests.get('https://www.example.com/image.jpg')
4 
5 with open('image.jpg', 'wb') as file:
6     file.write(response.content)

 

六、处理Cookies

requests模块可以自动处理Cookies,并允许手动设置和获取Cookies。

6.1 自动处理Cookies

 1 import requests
 2 
 3 # 创建一个 Session 对象
 4 session = requests.Session()
 5 
 6 # 登录的目标 URL
 7 # login_url = 'https://example.com/login'
 8 login_url = 'https://www.cnblogs.com/'
 9 
10 # 登录所需的表单数据
11 login_data = {
12     'username': 'jh',
13     'password': '123',
14 }
15 
16 # 发送 POST 请求进行登录
17 response = session.post(login_url, data=login_data)
18 
19 print("登录响应状态码:", response.status_code)
20 
21 if response.ok:
22     print("登录成功!")
23 
24     # 登录后访问另一个需要身份验证的页面
25     protected_url = 'https://example.com/protected'
26     protected_response = session.get(protected_url)
27 
28     if protected_response.ok:
29         print("访问受保护页面成功!")
30         print(protected_response.text)  # 打印受保护页面的内容
31     else:
32         print("访问受保护页面失败,状态码:", protected_response.status_code)
33 else:
34     print("登录失败,状态码:", response.status_code)

 

posted on 2024-11-01 17:59  认真的六六  阅读(11)  评论(0编辑  收藏  举报