当前位置: 首页 > news >正文

10.每天进步一点点---Python-Requests HTTP 请求库-2

文章目录

  • 5.Requests 处理 Cookie
  • 6.Requests 重定向与请求历史
  • 7.Requests 错误与异常处理
  • 8.Requests Session 会话对象
  • 9.Requests SSL 证书验证

5.Requests 处理 Cookie

通过r.cookies即可获得RequestsCookieJar对象,其行为与字典类似;如果想带着Cookies 去访问,可以在请求里添加 cookies={‘xxx’:‘yyy’}参数;也可以通过 requests.cookies. RequestsCookieJar()调用 set 方法进行构造,比如:

ar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
# 遍历cookies:
for c in r.cookies:
 print(c.name + ":" + c.value)

CookieJar 与字典间互转的代码示例如下:

# 字典 -> CookieJar
cookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)
# CookieJar-> 字典
cookies = requests.utils.dict_from_cookiejar(r.cookies) 

6.Requests 重定向与请求历史

除了 HEAD 请求,Requests 会自动处理所有重定向,可以在执行请求时使用 allow_redirects=False 禁止重定向,也可以使用响应对象的 history 属性来追踪请求历史。该 属性是一个 Response 对象的列表,该对象列表按照请求时间的先后顺序进行排序。

7.Requests 错误与异常处理

使用 Requests 的常见异常如下:

  • 遇到网络问题,会抛出 requests.ConnectionError 异常。
  • 请求超时,会抛出 requests.Timeout 异常。
  • 请求超过了设定的最大重定向次数,会抛出
  • requests.TooManyRedirects 异常。
  • HTTP 错误,会抛出 requests.HTTPError 异常。
  • URL 缺失,会抛出 requests.URLRequired 异常。
  • 连接远程服务器超时,会抛出 requests.ConnectTimeout 异常。

另外,Requests 显式抛出的异常都继承自 requests.exceptions.RequestException。

8.Requests Session 会话对象

s = request.Session() # 建立会话
s.post('http://xxx.login',data={'xx':'xx'}) # 登录网址
s.get('http://xxx.user') # 登录后才能访问的网址
s.close() # 关闭会话

9.Requests SSL 证书验证

现在大部分站点都采用 HTTPS,不可避免会涉及证书问题。如果遇到 12306 这种自发 CA 证书的站点,会抛出 requests.exception.SSLError 异常。可以添加参数 verify=False,但 是设置后还是会有下面这样的提示

InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate 
verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.
html#ssl-warnings InsecureRequestWarning)

此时还需要添加 urllib3.disable_warnings(),也可以通过 cert 参数放入证书路径。代码 示例如下:

import requests
# 忽略证书
from requests.packages import urllib3
urllib3.disable_warnings()
resp = requests.get("https://www.12306.cn",verify=False)
print(response.status_code)
# 设置本地证书
resp = requests.get('https://www.12306.cn', cert=('**.crt', '**.key'))

相关文章:

  • 鸿蒙开发初体验以及遇到的几点坑
  • AI 实战篇 |基于 AI开放平台实现 【植物识别】 功能,成为行走的百科全书
  • 9 个神奇的 Python 技巧,让你的代码更优雅
  • Roson的Qt之旅 #136 Qt实现截图功能
  • MySQL 日志之 binlog 格式 → 关于 MySQL 默认隔离级别的探讨
  • 【OpenCV-Python】教程:4-7 BRIEF( Binary Robust Independent Elementary Features)特征
  • 【Python】基本语法 4 (列表和元组)
  • Linux系统中如何实现串口的格式化功能方法
  • [附源码]计算机毕业设计基于web的建设科技项目申报管理系统Springboot程序
  • 【Linux】Linux的常见指令详解(下)
  • AI 让观众成为 3D 版《老友记》的导演了?
  • HTML做一个简单的页面(纯html代码)地球专题学习网站
  • 用Python画一个足球
  • C语言百日刷题第十三天
  • Frida - App逆向 JavaScript代码注入 基本语法以及数据类型介绍
  • 智慧天气系统 - 可视化大屏(Echarts)管理系统(HTTP(S)协议)物联网平台(MQTT协议)
  • RK3568平台开发系列讲解(系统优化篇)系统卡顿了怎么办
  • 防火墙豁免实验
  • [激光原理与应用-45]:《焊接质量检测》-2- 常见焊接缺陷与检验方法
  • 用HTML+CSS做一个漂亮简单大学生校园班级网页
  • 光速晋级!2025年多哈世乒赛孙颖莎4比0战胜对手
  • 雅安市纪委监委回应黄杨钿甜耳环事件:相关政府部门正在处理
  • 阳光保险拟设立私募证券投资基金,总规模200亿元
  • 美联储官员:美国经济增速可能放缓,现行关税政策仍将导致物价上涨
  • 俄乌谈判开始
  • 李伟任山东省委常委、省纪委书记