Python使用requests库发送请求的示例代码

 更新时间:2024年03月12日 08:35:44   作者:Shawn590  
与原生的urllib库相比,requests库提供了更简洁、易于理解和使用的API,使发送HTTP请求变得更加直观和高效,所以本文给大家介绍了Python如何使用requests库发送请求,需要的朋友可以参考下

前言

得益于各位技术大佬,经过封装后的requests库提供了一系列的接口,让我们可以更加便利地发送请求,管理Cookies和Session,以及验证代理等一系列操作。如果发现本文中有哪些错误,请不吝指正。

各种 HTTP 请求方法,不在话下

与原生的urllib库相比,requests库提供了更简洁、易于理解和使用的API,使发送HTTP请求变得更加直观和高效

import requests    # 导入工具包

r = requests.get('https://httpbin.org/get')    # GET 请求

print(r.status_code)    # 状态码
print(r.headers)    # 请求头
print(type(r))    # 类型

在这里,我们直接调用requests.get()函数,打开URL,并将返回的信息集合成一个对象,并赋值给r。于是,我们便可以通过r这个requests.models.Response 类型对象属性,来查看状态码等响应信息。

神奇的是,不仅GET请求可以这样做,PUT、DELETE等请求也可以如此这般:

r = requests.post('https://httpbin.org/post', data={'key': 'value'})    # POST 请求
r = requests.put('https://httpbin.org/put', data={'key': 'value'})    # PUT 请求
r = requests.delete('https://httpbin.org/delete')    # DELETE 请求
r = requests.head('https://httpbin.org/get')    # HEAD 请求
r = requests.options('https://httpbin.org/get')    # OPTIONS 请求

糟糕糟糕,请求错误OMG

跌落谷底并不可怕,可怕的是茫然四顾却束手无措。在Python的requests库中,我们也可以很方便地使用异常处理机制来有效捕捉和处理各种不同的异常。

import requests    # 导入工具包    

try:    # 用try和except块捕捉可能的异常
    response = requests.get('https://baidu.com')
    response.raise_for_status()
except requests.exception.HTTPError as e:
    print('HTTP 错误:', e)
  • response = requests.get('https://baidu.com'),如同上面所说,用requests.get()方法发出HTTP请求,并将响应信息集合成实例对象response
  • response.raise_for_status(),该方法用来检查响应信息的状态码,如果状态码是一个错误(比如404 Not Found500 Internal Server Error等),则会引发requests.exceptions.HTTPError异常,从而使代码跳转except模块,方便处理异常
  • except requests.exception.HTTPError as e:,该语句进行异常处理,用于捕获requests库中的HTTPError异常,并将其存储在变量e中,以便对异常对象进行访问或处理

当然,请求错误有很多类型,不止刚才提到的HTTP错误异常(HTTPError),还有连接异常(ConnectionError)超时异常(Timeout) 等异常情况。要想捕捉这些异常也非常简单,只需要把except requests.exception.HTTPError as e:语句中的HTTPError改成相应的异常名称即可。

Session会话,持久高效

在urllin库中,Session会话状态不易维护,我们需要手动管理每个请求的cookies,代码量较大且不够简洁。而requests库提供了非常灵活的管理接口,可以轻松地在多个会话之间保持会话状态信息。

作为新手,我常常混淆SessionCookies这两者的概念。事实上,由于各个HTTP请求是无状态相互独立的,服务器为了跟踪用户的状态信息,便提供一种机制,使其可以识别在短时间内多个不同的HTTP请求是同一个用户发出的,从而提供更多个性化服务。这种机制,便是会话(Session)

那么,服务器是如何识别这多个不同的HTTP请求是同一个用户发出的呢?

通过用户发送的HTTP请求信息中的一个令牌。这令牌,便是唯一会话标识符(Session ID)。当服务器第一次接收到用户的HTTP请求时,便给用户发送这个唯一会话标识符(Session ID),那么只要当之后浏览器等客户端每一次发送HTTP请求时,带上这个令牌,服务器便可以识别不同的HTTP请求是同一个用户发出的。在浏览器等客户端中,维护这令牌的,便是Cookies

于是在实际爬虫中,我们如果有需要,便可以去维护Cookies,从而让服务器能够长久地维护Session会话

import requests    # 导入工具包

s = requests.Session()    # 创建一个 Session 对象
s.get('https://httpbin.org/get')    # 发送 GET 请求
s.cookies.set('key','value')    # 设置 Cookies 参数
s.headers.update({'User-Agent':'Mozilla/5.0'})    # 设置headers参数,自定义请求头
  • s = requests.Session(),这里用requests.Session()方法构建一个会话对象,并将其赋值给s
  • s.get('https://httpbin.org/get'),值得注意的是,该会话对象s的类型是requests.sessions.Session 类型对象,该类型对象可以像 requests.models.Response 类型对象一样发送各类诸如GET、POST类型的HTTP请求。
  • s.cookies.set('key','value'),该语句通过使用cookies参数来设置cookies
  • s.headers.update({'User-Agent':'Mozilla/5.0'}),该代码使用headers参数设置 headers,其中不仅可以包括User-Agent客户端类型表示,还可以包括Accept客户端可接受内容类型、Authorization身份验证信息等

到此这篇关于Python使用requests库发送请求的示例代码的文章就介绍到这了,更多相关Python requests发送请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python分布式环境下的限流器的示例

    python分布式环境下的限流器的示例

    本篇文章主要介绍了python分布式环境下的限流器的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Python 数据可视化之Bokeh详解

    Python 数据可视化之Bokeh详解

    这篇文章主要介绍了Python数据可视化库Bokeh的使用总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-11-11
  • Python 3.6 性能测试框架Locust安装及使用方法(详解)

    Python 3.6 性能测试框架Locust安装及使用方法(详解)

    下面小编就为大家带来一篇Python 3.6 性能测试框架Locust安装及使用方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Python+PyQt5实现美剧爬虫可视工具的方法

    Python+PyQt5实现美剧爬虫可视工具的方法

    这篇文章主要介绍了Python+PyQt5实现美剧爬虫可视工具的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Python字符串切片操作知识详解

    Python字符串切片操作知识详解

    这篇文章主要介绍了Python中字符串切片操作 的相关资料,需要的朋友可以参考下
    2016-03-03
  • python中scrapy处理项目数据的实例分析

    python中scrapy处理项目数据的实例分析

    在本篇文章里小编给大家整理了关于python中scrapy处理项目数据的实例分析内容,有兴趣的朋友们可以学习下。
    2020-11-11
  • Python中tkinter的用户登录管理的实现

    Python中tkinter的用户登录管理的实现

    这篇文章主要介绍了Python中tkinter的用户登录管理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • python numpy 一维数组转变为多维数组的实例

    python numpy 一维数组转变为多维数组的实例

    今天小编就为大家分享一篇python numpy 一维数组转变为多维数组的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 浅谈Python Opencv中gamma变换的使用详解

    浅谈Python Opencv中gamma变换的使用详解

    下面小编就为大家分享一篇浅谈Python Opencv中gamma变换的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 关于Pandas缺失值inf与nan的处理实践

    关于Pandas缺失值inf与nan的处理实践

    这篇文章主要介绍了关于Pandas缺失值inf与nan的处理实践,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06

最新评论