
本文共 3285 字,大约阅读时间需要 10 分钟。
#Requests库简介
Requests库是Python中一个强大的HTTP客户端库,用于便捷地发送HTTP请求并处理响应。它提供了多种高级功能,包括自动重定向、连接超时控制、证书验证等,极大地简化了发送HTTP请求的过程。
##Requests库的7个主要方法
Requests库提供了7种主要的HTTP方法,涵盖了常见的HTTP请求类型。
###1.requests.request() 创建一个请求,支撑其他方法的基础功能。可以用来构造基础的HTTP请求。
###2.requests.get() 获取HTML网页的主要方法,对应HTTP的GET请求。用于从服务器获取指定URL的资源。
###3.requests.head() 获取HTML网页头信息的方法,对应HTTP的HEAD请求。HEAD请求与GET请求的主要区别是无内容体,只返回头部信息。
###4.requests.post() 向HTML网页提交POST请求的方法,对应HTTP的POST请求。POST请求用于向服务器提交数据,常用于表单提交或数据上传。
###5.requests.put() 向HTML网页提交PUT请求的方法,对应HTTP的PUT请求。PUT请求用于替换服务器中的资源内容,与POST请求不同,PUT请求的数据会覆盖服务器上的现有资源。
###6.requests.patch() 向HTML网页提交局部修改请求,对应HTTP的PATCH请求。PATCH请求允许客户端对资源进行局部修改,仅修改指定字段的值。
###7.requests.delete() 向HTML页面提交删除请求,对应HTTP的DELETE请求。用于删除服务器上指定URL对应的资源。
##Response对象的属性
在发送HTTP请求后,Requests库返回一个Response对象,该对象包含了服务器的响应信息。以下是Response对象的主要属性:
###1. r.status_code HTTP请求的返回状态码。200表示成功,404表示资源未找到,500表示服务器错误等。
###2. r.text HTTP响应内容的字符串形式,即URL对应页面的文本内容。
###3. r.encoding 从HTTP头部中推断的响应内容编码方式。
###4. r.apparent_encoding 从响应内容中分析出的备选编码方式。
###5. r.content HTTP响应内容的二进制形式。
###6. r.headers HTTP响应头部信息。
###7. r.cookies 响应中包含的cookie信息。
##Requests库的异常
在使用Requests库时,可能会遇到各种异常。以下是常见异常的分类:
###1. requests.ConnectionError 网络连接错误异常,包括DNS查询失败、服务器拒绝连接等。
###2. requests.HTTPError HTTP错误异常,表示HTTP请求的状态码不在正常范围内。
###3. requests.URLRequired URL缺失异常,表示请求中缺少URL参数。
###4. requests.TooManyRedirects 重定向次数过多异常,表示服务器返回了过多的重定向响应。
###5. requests.ConnectTimeout 连接服务器超时异常,表示连接远程服务器的时间超出了设定值。
###6. requests.Timeout 请求超时异常,表示从发送请求到获取响应的整个过程超时。
###7. r.raise_for_status() 在调用该方法时,如果响应状态码不为200,会抛出requests.HTTPError异常。
##HTTP协议
HTTP(Hypertext Transfer Protocol,超文本传输协议)是基于“请求与响应”模式的、无状态的应用层协议。它通过URL定义网络资源的位置,允许多个客户端向同一资源发起请求。
###HTTP URL格式 URL格式为:http://host[:port][path]
host
:合法的Internet主机域名或IP地址。port
:端口号,缺省为80。path
:请求资源的路径。
###HTTP协议的特点
- 无状态:HTTP协议不需要客户端保持连接状态。
- 分层协议:HTTP位于应用层,下一层是传输层(如TCP/IP)。
- 灵活性高:支持多种请求方法和头部信息。
##HTTP协议对资源的操作
HTTP协议支持多种资源操作方法,包括:
###1. GET 请求获取URL位置的资源。
- 适用于获取静态资源,如HTML页面、图片文件等。
###2. HEAD 请求获取URL位置资源的响应头部信息。
- HEAD请求的内容体为空,只返回头部信息。
###3. POST 请求向URL位置的资源后附加新的数据。
- 常用于表单提交、数据上传、API请求等。
###4. PUT 请求向URL位置存储一个资源,覆盖原资源。
- 数据会完全替换服务器上的资源内容。
###5. PATCH 请求局部更新URL位置的资源。
- 只修改指定字段的值,节省网络带宽。
###6. DELETE 请求删除URL位置存储的资源。
- 删除指定URL对应的资源。
##Requests方法的参数
requests.request(method, url, **kwargs)
是Requests库的核心方法,接受以下参数:
###1. method 请求方式,支持:GET、HEAD、POST、PUT、PATCH、DELETE等。
###2. url 请求的URL地址。
###3. **kwargs 控制访问的参数,包括:
params
:字典或字节流,作为URL查询参数。data
:字典、字节序列或文件对象,作为请求内容。json
:JSON格式的数据,作为请求内容。headers
:字典,自定义HTTP头部信息。cookies
:字典或CookieJar,管理cookie信息。auth
:元组,支持HTTP认证。files
:字典,上传文件。timeout
:设定超时时间,单位为秒。proxies
:字典,配置代理服务器。allow_redirects
:布尔值,控制重定向。stream
:布尔值,控制内容下载。verify
:布尔值,验证SSL证书。
##爬虫网页的通用代码框架
import requestsdef getHTMLText(url): try: r = requests.get(url, timeout=30) r.raise_for_status() # 检查响应状态码 r.encoding = r.apparent_encoding # 确定编码方式 return r.text # 返回页面内容 except: return "发生异常"if __name__ == "__main__": url = "https://www.baidu.com" print(getHTMLText(url))
##HTTP协议与Requests库的结合
通过Requests库,可以轻松实现对HTTP协议的各种操作。以下是HTTP协议的核心特点及其在Requests库中的体现:
###1. 无状态性 HTTP协议无状态,Requests库也遵循这一特点,不存在保持会话状态。
###2.灵活性 HTTP协议支持多种请求方法,Requests库提供了对应的高级方法,如POST、PUT、PATCH等。
###3.可扩展性 HTTP协议通过头部信息实现扩展,Requests库支持自定义头部信息。
通过以上内容,可以看出Requests库在HTTP协议中扮演了重要角色,极大地简化了发送HTTP请求和处理响应的过程。
发表评论
最新留言
关于作者
