随着互联网的发展,我们越来越依赖于网络这个工具来处理事务。如何快速地发送HTTP请求、处理响应成为了一项基本技能。requests是一个Python的第三方库,它可以轻松处理GET/POST等HTTP协议的请求,是一个非常强大但又非常易于使用的库。在这篇教程中,我们将对Python requests模块做详细的介绍,包括安装方法、基本使用方法、进阶使用方法等。
一、安装requests模块
在使用Python requests模块之前,我们需要先进行安装。Python requests模块可以很方便地通过pip来安装。打开终端,输入以下命令:
pip install requests
安装完成后,我们就可以在程序中使用requests模块了。
二、发送HTTP请求
发送HTTP请求是requests模块的核心功能之一。requests模块支持多种请求方式,包括GET、POST、PUT、DELETE等。在这里我们以GET和POST两种请求方式为例进行介绍。
1、发送GET请求
requests.get()方法可以轻松处理GET请求。以百度搜索为例:
import requests
response = requests.get('https://www.baidu.com/s', params={'wd': 'Python'})
print(response.text)
在这个例子中,我们使用requests.get()方法向百度搜索发送了一个GET请求,携带了参数‘wd: Python’。得到的响应内容会被输出。
2、发送POST请求
requests.post()方法可以轻松处理POST请求。以微博登录为例:
import requests
data = {
'username': 'xxx',
'password': 'xxx'
}
response = requests.post('https://passport.weibo.cn/sso/login', data=data)
print(response.text)
在这个例子中,我们使用requests.post()方法向微博登录页面发送了一个POST请求,携带了用户名和密码。得到的响应内容会被输出。
三、处理响应
requests模块发送请求后,服务器会返回响应结果,一般情况下,响应结果包含响应状态码、响应头、响应内容等。requests模块可以轻松地获取这些响应信息。
1、获取响应状态码
在响应结果中,状态码是一个非常重要的参数。我们可以通过response.status_code属性获取响应状态码。以百度搜索为例:
import requests
response = requests.get('https://www.baidu.com/s', params={'wd': 'Python'})
print(response.status_code)
上面的代码会输出200,代表请求成功。
2、获取响应头
有时候我们需要获取响应头的信息,可以通过response.headers属性获取响应头信息。以微博登录为例:
import requests
data = {
'username': 'xxx',
'password': 'xxx'
}
response = requests.post('https://passport.weibo.cn/sso/login', data=data)
print(response.headers)
上面的代码会输出微博登录响应的头信息。
3、获取响应内容
我们还可以通过response.text或response.content属性获取响应的内容。以百度搜索为例:
import requests
response = requests.get('https://www.baidu.com/s', params={'wd': 'Python'})
print(response.text)
上面的代码会输出百度搜索页面的HTML源代码。
四、进阶使用方法
除了上面介绍的基本使用方法外,requests模块还提供了一些进阶的使用方法,下面列举一些常用的进阶使用方法。
1、设置请求头
有时候我们需要在请求中添加一些header信息,可以使用requests.get()方法或requests.post()方法的headers参数添加。以知乎首页为例:
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'
}
response = requests.get('https://www.zhihu.com', headers=headers)
print(response.text)
上面的代码会输出知乎首页的HTML源代码。
2、设置超时时间
有时候我们需要设置请求的超时时间,以防止程序长时间无响应,可以使用requests.get()方法或requests.post()方法的timeout参数进行设置。以微博登录为例:
import requests
data = {
'username': 'xxx',
'password': 'xxx'
}
response = requests.post('https://passport.weibo.cn/sso/login', data=data, timeout=3)
print(response.text)
上面的代码会在3秒内获取微博登录的响应结果,超过3秒则会抛出一个timeout异常。
3、使用代理IP
有时候我们需要使用代理IP来发送HTTP请求,可以在requests.get()方法或requests.post()方法中设置proxies参数进行设置。以豆瓣电影为例:
import requests
proxies = {
'http': 'http://xxx.xxx.xxx.xxx:xxxx',
'https': 'https://xxx.xxx.xxx.xxx:xxxx'
}
response = requests.get('https://movie.douban.com', proxies=proxies)
print(response.text)
上面的代码会使用代理IP发送请求,获取豆瓣电影首页的HTML源代码。
总结
在本篇教程中,我们介绍了Python requests模块的安装方法、基本使用方法、进阶使用方法等。希望通过这篇教程,您能够掌握requests模块的基本使用,提升自己的编程效率。