Python中的HTTP请求库Requests的具体使用

 更新时间:2023年12月24日 09:19:52   作者:tester Jeffky  
Python作为一种功能强大且易于学习的编程语言,提供了许多用于处理HTTP请求的库,其中,Requests库是最受欢迎的选择之一,本文主要介绍了Python中的HTTP请求库Requests的具体使用,感兴趣的可以了解一下

在现代软件开发中,与Web服务进行交互已经成为一种常见的需求。无论是构建API、爬虫还是自动化测试,都需要向服务器发送HTTP请求并处理响应。Python作为一种功能强大且易于学习的编程语言,提供了许多用于处理HTTP请求的库。其中,Requests库是最受欢迎的选择之一。本文将介绍Requests库的基本用法和一些高级特性,帮助读者更好地理解和利用这个强大的工具。

  • Requests库简介

Requests库是一个简洁而优雅的Python HTTP库,它的目标是使HTTP请求变得简单易用。通过Requests库,我们可以方便地向服务器发送GET、POST、PUT、DELETE等不同类型的HTTP请求,并处理服务器返回的响应数据。Requests库的设计哲学是“人类可读”和“友好”,使得开发者可以更加专注于业务逻辑的实现,而不需要花费大量时间处理底层的网络细节。

  • 安装Requests库

要使用Requests库,首先需要将其安装到Python环境中。可以通过以下命令使用pip工具安装Requests库:

pip install requests

安装完成后,可以在Python代码中通过import requests语句导入Requests库。
以下是一些常用的Requests方法及其功能:

1. `r.status_code`:获取响应状态码,如200表示成功,404表示未找到等。
2. `r.content`:以字节方式获取响应体,会自动解码gzip和deflate压缩。
3. `r.headers`:以字典对象存储服务器响应头,若键不存在则返回None。
4. `r.json()`:Requests中内置的JSON解析方法,将响应体解析为Python字典或列表。
5. `r.url`:获取请求的URL。
6. `r.encoding`:获取响应的编码格式。
7. `r.cookies`:获取响应中的cookie。
8. `r.raw`:返回原始响应体。
9. `r.text`:以字符串方式获取响应体,会自动根据响应头部的字符编码进行解码。
10. `r.raise_for_status()`:如果请求失败(非200响应),则抛出异常。

使用Requests库的基本步骤如下:

1. 导入requests库:`import requests`
2. 发送请求:`r = requests.get(url)` 或 `r = requests.post(url, data=data)` 等。
3. 获取响应状态码:`r.status_code`
4. 获取响应内容:`r.content` 或 `r.text`
5. 获取响应头:`r.headers`
6. 解析响应体为JSON:`r.json()`
7. 获取请求的URL:`r.url`
8. 获取响应的编码格式:`r.encoding`
9. 获取响应中的cookie:`r.cookies`
10. 获取原始响应体:`r.raw`
11. 如果请求失败,抛出异常:`r.raise_for_status()`

  • 发送GET请求

GET请求是最常见的HTTP请求类型,用于从服务器获取资源。使用Requests库发送GET请求非常简单,只需要调用requests.get()函数并传入URL参数即可。以下是一个简单的示例:

import requests

url = 'https://www.baidu.com'
response = requests.get(url)

print(response.text)

在这个示例中,我们向https://www.baidu.com发送了一个GET请求,并将响应内容打印出来。需要注意的是,response.text属性包含了服务器返回的原始文本数据,如果响应内容是JSON格式,可以使用response.json()方法将其解析为Python对象。

  • 发送POST请求

POST请求用于向服务器提交数据,通常用于创建新资源或更新现有资源。使用Requests库发送POST请求也非常简单,只需要调用requests.post()函数并传入URL和数据参数即可。以下是一个简单的示例:

import requests

data = {'wd': 'Python'}
response = requests.post('https://www.baidu.com/s', data=data)

print(response.text)

在这个示例中,我们向https://www.baidu.com/s发送了一个POST请求,并将数据以字典的形式传递给data参数。需要注意的是,POST请求的数据通常以表单形式或JSON格式提交,可以通过设置headers参数来指定数据的格式。例如,如果要以JSON格式提交数据,可以设置headers{'Content-Type': 'application/json'}

  • 处理响应状态码和异常

在发送HTTP请求时,我们需要关注服务器返回的状态码,以便了解请求是否成功以及如何处理错误情况。Requests库提供了一些方便的方法来处理响应状态码和异常。以下是一些常用的方法:

  • response.status_code:获取响应的状态码。例如,如果状态码为200,表示请求成功;如果状态码为404,表示找不到资源。
  • response.raise_for_status():如果响应的状态码表示错误(非2xx),则抛出异常。这可以帮助我们及时发现并处理错误情况。例如:
response = requests.get('https://www.baidu.com')
response.raise_for_status()  # 如果状态码不是2xx,抛出异常
  • 设置请求头和Cookies

有时候,我们需要在HTTP请求中设置特定的请求头或Cookies。Requests库提供了一些方法来实现这一功能。以下是一些常用的方法:

  • requests.get(url, headers={'User-Agent': 'Mozilla/5.0'}):在GET请求中设置请求头。例如,我们可以设置User-Agent来模拟不同的浏览器或设备。
  • requests.get(url, cookies={'session': '123456789'}):在GET请求中设置Cookies。例如,我们可以使用会话ID来保持用户登录状态。
  • requests.post(url, data=data, headers={'Content-Type': 'application/json'}, cookies={'session': '123456789'}):在POST请求中设置请求头和Cookies。例如,我们可以同时设置数据格式和会话ID。
  • 超时和重试机制

在发送HTTP请求时,可能会遇到网络延迟、服务器故障等问题导致请求失败。为了提高程序的健壮性,我们可以使用Requests库提供的超时和重试机制。以下是一些常用的方法:

  • requests.get(url, timeout=5):设置GET请求的超时时间为5秒。如果超过5秒还没有收到响应,将抛出异常。
  • requests.Session().mount('http://', requests_retry.Retry()):使用重试机制来处理HTTP请求。例如,我们可以使用requests_retry库来实现自动重试功能。具体使用方法可以参考该库的文档。
  • 其他高级特性

除了上述基本用法外,Requests库还提供了许多其他高级特性,如代理、身份验证、文件上传等。这些特性可以帮助我们更灵活地处理各种HTTP场景。以下是一些常用的高级特性:

  • requests.get(url, proxies={'http': 'http://user:password@proxy:port', 'https': 'https://user:password@proxy:port'}):使用代理服务器发送HTTP请求。例如,我们可以使用代理服务器来绕过网络限制或提高访问速度。
  • 封装requests公共方法
import requests

class Request:
    def requests_api(self, url, data=None, json=None, headers=None, cookies=None, method="get"):
        if method == "get":
            r = requests.get(url, data=data, json=json, headers=headers, cookies=cookies)
        elif method == "post":
            r = requests.post(url, data=data, json=json, headers=headers, cookies=cookies)

        code = r.status_code
        try:
            body = r.json()
        except Exception as e:
            body = r.text
        res = dict()
        res["code"] = code
        res["body"] = body
        return res
    def get(self, url, **kwargs):
        return self.requests_api(url, method="get", **kwargs)
    def post(self, url, **kwargs):
        return self.requests_api(url, method="post", **kwargs)
  • 这个类的作用是封装了requests库中的get和post方法,使得发送HTTP请求更加方便。通过调用get或post方法,可以向指定的URL发送GET或POST请求,并获取响应的状态码和内容。
  • 在requests_api方法中,根据传入的method参数选择使用requests.get或requests.post方法发送请求。然后,将响应的状态码存储在变量code中,尝试将响应的内容解析为JSON格式,如果解析失败则使用原始文本作为响应内容。最后,将状态码和响应内容存储在一个字典中,并返回该字典作为结果。
  • 另外,get和post方法都是通过调用requests_api方法来实现的,它们分别传入不同的HTTP方法参数(“get"或"post”),并将其他参数传递给requests_api方法。这样,用户可以通过调用这两个方法来发送不同类型的HTTP请求。

到此这篇关于Python中的HTTP请求库Requests的具体使用的文章就介绍到这了,更多相关Python Requests内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Python数据分析之如何利用pandas查询数据示例代码

    Python数据分析之如何利用pandas查询数据示例代码

    查询和分析数据是pandas的重要功能,也是我们学习pandas的基础,下面这篇文章主要给大家介绍了关于Python数据分析之如何利用pandas查询数据的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • Anaconda安装opencv库详细图文教程

    Anaconda安装opencv库详细图文教程

    这篇文章主要给大家介绍了关于Anaconda安装opencv库详细图文教程的相关资料,安装Anaconda后,你可以使用conda命令在Anaconda环境中安装OpenCV,文中有详细步骤,需要的朋友可以参考下
    2023-07-07
  • Python中用函数作为返回值和实现闭包的教程

    Python中用函数作为返回值和实现闭包的教程

    这篇文章主要介绍了Python中用函数作为返回值和实现闭包的教程,代码基于Python2.x版本,需要的朋友可以参考下
    2015-04-04
  • Matplotlib实战之折线图绘制详解

    Matplotlib实战之折线图绘制详解

    折线图是一种用于可视化数据变化趋势的图表,它可以用于表示任何数值随着时间或类别的变化,本文主要介绍了如何利用Matplotlib实现折线图的绘制,感兴趣的可以了解下
    2023-08-08
  • python实现进程间通信简单实例

    python实现进程间通信简单实例

    这篇文章主要介绍了python实现进程间通信简单实例,需要的朋友可以参考下
    2014-07-07
  • Pycharm 2020最新永久激活码(附最新激活码和插件)

    Pycharm 2020最新永久激活码(附最新激活码和插件)

    最近很多朋友的Pycharm激活时间又过期了,今天小编再把激活的方法汇总和工具分享一下,文中给大家分享两种方式,需要的朋友直接拿去用吧
    2020-01-01
  • Django Admin中增加导出CSV功能过程解析

    Django Admin中增加导出CSV功能过程解析

    这篇文章主要介绍了Django Admin中增加导出CSV功能过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python中super()函数简介及用法分享

    Python中super()函数简介及用法分享

    本文给大家分享的是Python中的super函数的简单介绍以及用法和注意事项,有需要的小伙伴可以参考下
    2016-07-07
  • python 函数的详解与应用范例

    python 函数的详解与应用范例

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数
    2021-11-11
  • Python基于Opencv来快速实现人脸识别过程详解(完整版)

    Python基于Opencv来快速实现人脸识别过程详解(完整版)

    这篇文章主要介绍了Python基于Opencv来快速实现人脸识别过程详解(完整版)随着人工智能的日益火热,计算机视觉领域发展迅速,今天就为大家带来最基础的人脸识别基础,从一个个函数开始走进这个奥妙的世界,需要的朋友可以参考下
    2019-07-07

最新评论