Python请求库requests详解

Python请求库requests详解

Python请求库requests详解

1. 介绍

requests 是一个简洁、人性化的第三方Python库,用于发送HTTP请求。它比内置的urllib模块更加强大和易用,是大多数Python开发者选择的HTTP库之一。

2. 安装

你可以使用pip来安装requests库,只需要在命令行中输入以下命令即可:

pip install requests
Python

3. 发送GET请求

3.1 基本使用

使用requests库发送GET请求非常简单,只需要调用requests.get()方法并传入目标URL即可。以下是一个简单的示例:

import requests

response = requests.get('https://jsonplaceholder.typicode.com/posts')
print(response.text)
Python

运行上面的代码,你将会得到jsonplaceholder网站上所有帖子的内容,以JSON格式返回。你也可以通过response.json()方法直接将返回的JSON字符串转换为Python字典。

3.2 传递参数

有时候我们需要在GET请求中传递一些参数,例如查询字符串。你可以将这些参数作为一个字典传递给params参数。以下是一个示例:

import requests

query_params = {
    'userId': 1
}

response = requests.get('https://jsonplaceholder.typicode.com/posts', params=query_params)
print(response.text)
Python

在这个示例中,我们传递了一个userId参数,请求将会返回所有userId为1的帖子。

4. 发送POST请求

4.1 发送表单数据

要发送POST请求并提交表单数据,可以使用data参数。以下是一个示例:

import requests

form_data = {
    'username': 'user1',
    'password': 'password1'
}

response = requests.post('https://httpbin.org/post', data=form_data)
print(response.text)
Python

这里我们向httpbin发送了一个POST请求,并附带了表单数据usernamepassword

4.2 发送JSON数据

如果要发送JSON数据,可以使用json参数。以下是一个示例:

import requests

json_data = {
    'key1': 'value1',
    'key2': 'value2'
}

response = requests.post('https://httpbin.org/post', json=json_data)
print(response.text)
Python

在这个示例中,我们向httpbin发送了一个POST请求,并附带了JSON数据。

5. 响应处理

发送请求后,requests库会返回一个Response对象,通过这个对象我们可以获取响应的各种信息。以下是一些常用的方法和属性:

  • response.text:获取响应内容的文本形式。
  • response.json():将响应内容解析为JSON格式。
  • response.status_code:获取响应的状态码。
  • response.headers:获取响应的头部信息。
  • response.cookies:获取响应中的cookies。
  • response.content:获取响应内容的二进制形式。

6. 设置请求头部

有时候我们需要在请求中设置一些自定义的头部信息,可以使用headers参数。以下是一个示例:

import requests

headers = {
    'User-Agent': 'Mozilla/5.0'
}

response = requests.get('https://httpbin.org/get', headers=headers)
print(response.text)
Python

在这个示例中,我们向httpbin发送了一个GET请求,并设置了User-Agent属性。

7. 错误处理

发起请求时,可能会遇到一些错误,如超时、连接失败等。requests库提供了一些内置的异常类,可以帮助我们处理这些错误。以下是一些常见的异常类:

  • requests.exceptions.ConnectionError:连接错误。
  • requests.exceptions.Timeout:请求超时。
  • requests.exceptions.HTTPError:HTTP错误。

你可以使用try-except语句来捕获这些异常,对错误进行处理。

8. 会话对象

在某些情况下,我们需要保持会话状态,以便在多次请求中共享cookie等信息。requests库提供了Session对象来处理这种情况。以下是一个示例:

import requests

session = requests.Session()

response1 = session.get('https://example.com/login')
response2 = session.post('https://example.com/login', data={'username': 'user1', 'password': 'password1'})
print(response2.text)
Python

在这个示例中,我们创建了一个会话对象,并使用该对象连续发送了两次请求。

9. SSL证书验证

在发送HTTPS请求时,requests库会默认验证SSL证书。如果需要禁用证书验证,可以将verify参数设置为False。以下是一个示例:

import requests

response = requests.get('https://example.com', verify=False)
print(response.text)
Python

在这个示例中,我们向example.com发送了一个GET请求,并禁用了SSL证书验证。

10. 代理设置

如果需要使用代理服务器发送请求,可以在参数中设置proxies。以下是一个示例:

import requests

proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'https://10.10.1.11:1080'
}

response = requests.get('https://example.com', proxies=proxies)
print(response.text)
Python

在这个示例中,我们向example.com发送了一个GET请求,并设置了HTTP和HTTPS代理。

11. 总结

requests是一个功能强大且易用的HTTP库,提供了简洁的API和丰富的功能,使得发送HTTP请求变得轻松和愉快。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册