【学习笔记】Python之Requests库
发布日期:2021-05-06 16:12:36 浏览次数:21 分类:精选文章

本文共 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 requests
def 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请求和处理响应的过程。

上一篇:例题 9-2 巴比伦塔(The Tower of Babylon, UVa 437)
下一篇:【学习笔记】Python之NumPy库

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年03月23日 13时18分44秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章