在业界中,Python的使用率极高,特别是在Web开发和网络爬虫方面。对于网络爬虫而言,常常使用的库为requests。requests是Python第三方库,它简化了HTTP请求和响应过程的复杂性,也可以用于HTTP/2和异步HTTP通信。那么,本文将介绍如何使用Python的requests请求。
一、requests库的安装
在开始之前,我们需要先安装requests库,这里我们介绍两种安装方式。
1、使用pip安装:在终端中输入以下命令即可完成安装。
pip install requests
2、使用conda安装:在conda环境下,通过以下命令即可完成requests库的安装。
conda install requests
二、requests库的使用
requests库主要包含如下功能:
1、request()函数
2、response()函数
3、get()函数
4、head()函数
5、post()函数
6、put()函数
7、patch()函数
8、delete()函数
9、session()函数
1、requests.request()
请求函数request()可接收如下参数:
def request(method, url, **kwargs):
其中,method是请求类型,url是请求URL,kwargs 表示其他可选参数,包括:
params: URL 中的额外参数 data: 请求中需要的数据 json: JSON 格式的数据 headers: 请求头 cookies: 请求Cookies files: 文件上传 auth: HTTP 基础认证 timeout: 超时时间 allow_redirects: 是否允许重定向, proxies: 代理 verify: 是否验证证书 stream: 是否从响应中立即下载响应体 cert: SSL 证书
例如,我们可以使用request() 应用函数来发送一个GET请求,如下所示:
import requests response = requests.request('GET', 'http://www.baidu.com') print(response.text) # 输出响应内容
在上述示例中,我们使用请求函数request()发送了一个GET请求到百度首页,获取了响应结果并输出结果到终端。
2、requests.get()
get()函数可以用于发送非常简单的get请求。
requests.get(url, params=None, **kwargs)
其中,params是可选的查询字符串参数,用于拼接URL的查询参数。
例如:
import requests response = requests.get('https://www.baidu.com/s', params={'wd': 'requests'}) print(response.url) # 输出请求的URL print(response.text) # 输出响应内容
在上面的示例中,我们通过get()函数请求了百度搜索关键字为“requests”的结果,并输出了URL和响应内容。
3、requests.post()
post()函数可以用于发送POST请求。它也可以接受一个data参数,用于指定POST请求体中的数据。
requests.post(url, data=None, **kwargs)
例如:
import requests response = requests.post('https://httpbin.org/post', data={'key':'value'}) print(response.text) # 输出响应内容
在上述例子中,我们发送了一条POST请求,其中发送了一个data参数为{‘key’:‘value’}的参数数据。我们通过输出响应内容来验证请求是否被正确解析。
4、requests.put()
put()函数可以用于发送PUT请求,它也可以接受一个data参数,用于指定PUT请求体中的数据。
requests.put(url, data=None, **kwargs)
例如:
import requests response = requests.put('https://httpbin.org/put', data={'key':'value'}) print(response.text) # 输出响应内容
在上述示例中,我们用put()函数发送了一条PUT请求,其请求体中包含了一个键值对为{‘key’:‘value’}的数据。
5、requests.patch()
patch()函数可以用于发送PATCH请求,它也可以接受一个data参数,用于指定PATCH请求体中的数据。
requests.patch(url, data=None, **kwargs)
例如:
import requests response = requests.patch('https://httpbin.org/patch', data={'key':'value'}) print(response.text) # 输出响应内容
在上述示例中,我们用patch()函数发送了一条PATCH请求,请求体中包含了一个键值对为{‘key’:‘value’}的数据。
6、requests.delete()
delete()函数可以用于发送DELETE请求,它也可以接受一个data参数,用于指定DELETE请求体中的数据。
requests.delete(url, data=None, **kwargs)
例如:
import requests response = requests.delete('https://httpbin.org/delete', data={'key':'value'}) print(response.text) # 输出响应内容
在上述示例中,我们用delete()函数发送了一条DELETE请求,请求体中包含了一个键值对为{‘key’:‘value’}的数据。
7、requests.head()
head()函数可以用于发送HEAD请求。
requests.head(url, **kwargs)
例如:
import requests response = requests.head('https://www.baidu.com') print(response.headers) # 输出响应头
在上述示例中,我们用head()函数发送了一条HEAD请求,输出了响应头。
8、requests.session()
session()函数可以用于创建一个Session对象,以便在多个请求之间保持会话状态。
例如:
import requests with requests.Session() as session: response = session.get('https://httpbin.org/cookies/set/sessioncookie/123456789') print(response.text) # 输出设置的cookie值 response = session.get('https://httpbin.org/cookies') print(response.text) # 输出会话中的cookie值
在上述示例中,我们用session()函数创建了一个Session对象,并使用get()函数发送了两条请求。第一次请求设置了一个名为“sessioncookie”的cookie,第二个请求中展示了会话中的cookie。这个示例展示了如何在多次请求中保持cookie信息。
9、请求头和请求Cookies
请求头用于向服务器发送自定义头信息,请求Cookies用于向服务器发送cookie信息。
例如:
import requests url = 'https://httpbin.org/headers' headers = {'User-Agent': 'Mozilla/5.0'} cookies = {'key': 'value'} response = requests.get(url, headers=headers, cookies=cookies) print(response.text) # 输出响应内容
在上述示例中,我们使用headers和cookies参数向服务器发送自定义请求头和cookie信息。
10、文件上传
requests库也支持文件上传功能,可以通过files参数实现文件上传。
例如:
import requests url = 'https://httpbin.org/post' files = {'file': open('test.txt', 'rb')} response = requests.post(url, files=files) print(response.text) # 输出响应内容
在上述示例中,我们使用files参数进行文件上传,该参数接收一个字典类型变量,其中键代表表单字段名,值代表文件数据。
11、代理设置
请求代理可以在请求时设置代理,以便使用代理服务器来发送请求。
例如:
import requests url = 'https://httpbin.org/ip' proxies = { 'http': 'http://10.10.1.10:3128', 'https': 'https://10.10.1.10:1080', } response = requests.get(url, proxies=proxies) print(response.json()) # 输出响应内容
在上述示例中,我们使用proxies参数设置了http和https的代理服务器,请求获取了返回JSON格式的IP地址信息。
12、证书验证
在使用requests库时,可以设置是否需要验证HTTPS证书。
例如:
import requests url = 'https://httpbin.org/get' response = requests.get(url, verify=True) print(response.status_code) # 输出响应状态码
在上述示例中,我们使用verify参数设置证书验证为True,对返回的是HTTP代码为200的响应进行检验。
13、超时设置
在访问某些网站时,可能会遇到请求超时的情况。此时,可以使用timeout参数设置超时时间。
例如:
import requests url = 'https://httpbin.org/delay/10' timeout = 1 response = requests.get(url, timeout=timeout) print(response.status_code) # 输出响应状态码
在上述示例中,我们使用timeout参数设置请求超时时间为1秒,请求了一个需要延迟10秒的URL。由于请求超时,将会得到一个TimeoutError异常。
三、总结
requests库是Python爬虫领域中最常用的网络请求库之一。它提供了简单易用的API,可以帮助开发者快速、方便地进行HTTP请求。本文介绍了requests库的常用函数,包括request(), get(), post(), put(), patch(), delete(), head()等,及其常用参数和用法。同时,本文还介绍了headers、cookies、文件上传、代理设置、证书验证、超时设置等高级用法。通过学习本文,相信读者已经能够灵活使用requests库进行网络请求,提高爬虫编写效率。