requests库是一个方便的HTTP请求库,它允许我们使用Python发送HTTP/1.1请求。这个库可以用来完成很多网络相关的任务,例如获取HTML内容、发送post和get请求、下载文件等。下面我们将详细介绍如何使用requests库来发送请求。
安装requests库
安装requests库的方法非常简单,只需在命令行输入下面的命令就可以了:
pip install requests
发送GET请求
发送一个最简单的GET请求,只需简单地调用requests库的get()函数:
import requests
response = requests.get('https://www.baidu.com')
print(response.text)
上面的代码发送了一个GET请求给百度,并将响应内容打印出来。代码执行结果如下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta content="always" name="referrer">
<meta name="theme-color" content="#2932e1">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="search" type="application/opensearchdescription+xml" href="/content-search.xml" title="百度搜索" />
可以看到,requests库发送请求后返回了HTML页面的内容。
发送POST请求
要发送POST请求,需要调用requests库的post()函数,并将需要POST的数据以字典的方式传递给它:
import requests
data = {'username': 'test', 'password': '123456'}
response = requests.post('http://httpbin.org/post', data=data)
print(response.text)
这个例子向httpbin.org发送了一个POST请求,同时传递了两个数据(username和password),并将响应的内容打印出来。代码执行结果如下:
{
"args": {},
"data": "",
"files": {},
"form": {
"password": "123456",
"username": "test"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "27",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.25.1",
"X-Amzn-Trace-Id": "Root=1-61505提取响应内容
使用requests库发送请求后,我们可以通过访问响应对象的属性来获取响应内容。
访问响应对象的属性
响应对象的常用属性如下所示:
- status_code: HTTP请求的返回状态,200表示连接成功,404表示连接失败等等。
- text: HTTP响应内容的字符串形式。
- content: HTTP响应内容的二进制形式。
- json(): 将响应内容解析为JSON形式。
以下是一个例子,它演示了如何使用响应对象的属性:
import requests
response = requests.get('https://www.baidu.com')
print('状态码:', response.status_code)
print('响应内容:', response.text)
print('响应内容(二进制):', response.content)
print('响应内容(JSON格式):', response.json())
在使用requests库发送多个请求时,使用Session会更加高效。Session对象会在请求之间自动地保持Cookie,因此我们不需要重复地登录。使用requests.Session()可以创建一个Session对象,而Session对象可以使用get()、options()、post()等方法发送请求。
下面是一个使用Session发送请求的例子:
import requests
s = requests.Session()
# 访问登录页面获取Cookie
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
# 访问网站页面,会自动带上Cookie
response = s.get('http://httpbin.org/cookies')
print(response.text)
当我们完成了对一个网站的访问时,要记得关闭Session对象,以便释放资源和关闭与服务器的连接。可以使用session.close()方法来关闭Session对象
import requests
s = requests.Session()
# 访问登录页面获取Cookie
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
# 访问网站页面,会自动带上Cookie
response = s.get('http://httpbin.org/cookies')
print(response.text)
s.close() # 关闭Session对象
在本例中,我们创建了一个Session对象,并通过访问登录页面来获取Cookie,然后访问网站页面,并自动带上了Cookie。最后,我们关闭了Session对象。
总结
本文介绍了如何使用Python中的requests库发送HTTP请求,包括发送GET和POST请求、访问响应对象的属性、使用Session等。掌握这些技能可以让我们更加高效和方便地处理网络相关的任务。在实际应用中,我们需要根据具体的业务需求和网站API来使用requests库发送请求。此外,我们也需要注意网络安全问题,例如防止SQL注入和XSS攻击等。