requests学习记录

requests库总结

1、requests库作用
2、get方法
3、post方法
4、requests库常见抛出异常
5、session()方法


1、requests库作用



  • requests库是一个用于发送HTTP请求的Python库。它提供了一种简单而直观的方式来与Web服务进行交互,例如在爬取网页数据、访问API或进行HTTP通信等方面。使用requests库,你可以轻松地向服务器发送GET、POST、PUT、DELETE等各种类型的请求,并获取响应结果。

  • 主要功能包括:

    1、发送HTTP请求:使用requests库,你可以发送各种类型的HTTP请求,如GET、POST、PUT等,以及定制请求头、请求参数、文件上传等功能。

    2、处理响应结果:requests库能够处理服务器返回的响应结果,包括获取响应状态码、响应头、响应正文等信息。你可以根据需要对响应结果进行解析和处理。

    3、Session管理:requests库支持使用Session对象来管理会话,可以在多个请求之间保持会话状态,例如保存登录信息、设置Cookie等。

    4、身份认证:requests库提供了基本身份认证、摘要认证和OAuth等身份认证机制,可以轻松地在请求中添加身份凭证。

    5、SSL验证:requests库默认会验证HTTPS请求的SSL证书,你可以自定义验证方法或禁用SSL验证。

    6、文件上传和下载:requests库可以方便地处理文件的上传和下载,支持多种文件传输方式,如普通文件上传、分块上传、断点续传等。


2、get方法



  • 基本使用方法:

    import requests

    headers = {‘User-Agent’:‘xxx’(用于伪装成浏览器)}

    res = requests.get(‘url’,headers = headers)
    #get方法获取网址中的内容并保存在res中

    print(res.text)


    GET 方法返回的数据类型没有固定规定,而是根据服务器端实际配置和所请求资源的内容来确定。通常,通过查看响应头部的 Content-Type 字段可以了解服务器返回的数据类型。

    通常有以下类型的数据:

    1、文本数据:服务器可以返回纯文本数据,如普通文本、HTML、XML、JSON 等。这些数据类型通常以字符串的形式返回。

    2、图像数据:当请求的资源是图像文件时,服务器可以返回图像数据,如JPEG、PNG、GIF 等格式。这些数据类型以二进制形式返回。

    3、二进制数据:有时,服务器可能会返回二进制数据,例如文件下载或媒体文件。这些数据以字节流的形式返回。

    4、文件数据:在某些情况下,服务器可能直接返回文件数据,并提供下载链接。这样的响应可能包含文件的元数据和字节流。


3、post方法



  • 基本使用方法:

    import requests

    url = “https://example.com/api”

    data = {“key1”: “value1”, “key2”: “value2”}
    #创建的字典即为要提交的数据

    headers = {“Content-Type”: “application/json”}

    response = requests.post(url, json=data, headers=headers)
    #获取的响应存在response中



    该例子使用post()方法发送请求,并将响应存储在response变量中。该方法接受两个参数:URL和数据。你可以通过传递一个字典或一个字符串作为数据来发送POST请求。
    除了data参数,post()方法还有其他一些可选参数,如headers、params、json等。这些参数可以用于设置请求头、查询字符串参数或发送JSON数据。




4、requests库常见抛出异常


  • ConnectionError :网络问题,如DNS查询失败,拒绝连接…
  • Response.raise_for_status()抛出一个HTTPError异常:404错误等
  • Requests抛出一个Timeout异常;请求超时
  • Requests抛出一个TooManayRedirects异常:请求超过设定的最大重定向次数



    为避免这些异常导致整个程序停止而需全部重新运行的情况,可以使用python的try-except语句,示例如下:

    import requests

    try:

    response = requests.get(‘https://example.com’, timeout=5)

    # 处理响应数据

    print(response.text)

    except requests.exceptions.Timeout:

    # 请求超时异常处理

    print(“请求超时,请稍后重试或检查网络连接。”)

    except requests.exceptions.RequestException as e:

    # 其他请求异常处理

    print(“请求发生错误:”, e)



    通过将请求代码放置在try块中,可以捕获可能抛出的Timeout异常。然后,可以根据具体情况进行适当的处理,例如打印错误信息、重试请求或执行其他操作(即当出现对应异常时就会跳过try:下的语句而去执行except:下的语句)

5、session()方法

参考文章: Python之requests模块-session

  • 基本使用方法

‘’’

import requests

s = requests.Session()
# 第一步:发送一个请求,用于设置请求中的cookies
# tips: http://httpbin.org能够用于测试http请求和响应
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
# 第二步:再发送一个请求,用于查看当前请求中的cookies
r = s.get("http://httpbin.org/cookies")
print(r.text)

结果如下:

{
  "cookies": {
    "sessioncookie": "123456789"
  }
}
  • session()的作用:

1、建立会话状态:当发送请求时,会话对象会保存并发送之前请求过程中获取的cookie信息(如上面的示例程序),这样可以在后续请求中保持会话状态,避免重复登录或其他操作,同时减少服务器的压力。

2、避免频繁连接和断开:使用session()方法可以在多个请求之间维持同一个TCP连接,减少了频繁连接和断开的开销,提高了爬取速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值