当前位置: 首页 > 编程笔记 >

python requests response值判断方式

张俊茂
2023-03-14
本文向大家介绍python requests response值判断方式,包括了python requests response值判断方式的使用技巧和注意事项,需要的朋友参考一下

这段时间在技术上没太多的思考的,只是碰到几个虾米小问题。 往往问题不大,也会致使你花心思去排解。

今遇到一个reqeusts返回值的一个问题,花了不短时间调,后来发现是reqeusts返回的对象也含有 魔法函数 处理。

我这边的业务是cdn的刷新预缓存,对于该项目来说 http code 200, 2xx, 404 都是友好的。

#jb51.net

import requests
r = None
try:
 r = requests.get("https://jb51.net")
except:
 pass
if r:
 print "ok"

为什么没有输出ok ? 按照常理来说,只要r不为 零值,就可以匹配到True. 但这次的返回是 <Response [404]>,为什么404会引起 if r 判断异常。

> type(r)

> requests.models.Response

看 requests的源代码可以很容易分析出该问题。

#jb51.net

class Response(object):
 """The :class:`Response <Response>` object, which contains a
 server's response to an HTTP request.
 """

 __attrs__ = [
  '_content', 'status_code', 'headers', 'url', 'history',
  'encoding', 'reason', 'cookies', 'elapsed', 'request'
 ]

 def __init__(self):
  super(Response, self).__init__()

  self._content = False
  self._content_consumed = False

  #: Integer Code of responded HTTP Status, e.g. 404 or 200.
  self.status_code = None

 def __repr__(self):
  return '<Response [%s]>' % (self.status_code)

 def __bool__(self):
  return self.ok

 @property
 def ok(self):
  try:
   self.raise_for_status()
  except HTTPError:
   return False
  return True

 def raise_for_status(self):
 ¦ """Raises stored :class:`HTTPError`, if one occurred."""

 ¦ http_error_msg = ''

 ¦ if 400 <= self.status_code < 500:
 ¦ ¦ http_error_msg = '%s Client Error: %s for url: %s' % (self.status_code, self.reason, self.url)

 ¦ elif 500 <= self.status_code < 600:
 ¦ ¦ http_error_msg = '%s Server Error: %s for url: %s' % (self.status_code, self.reason, self.url)

 ¦ if http_error_msg:
 ¦ ¦ raise HTTPError(http_error_msg, response=self)

END.

以上这篇python requests response值判断方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Java判断绝对值的方法总结,包括了Java判断绝对值的方法总结的使用技巧和注意事项,需要的朋友参考一下 if-else语句判断: 三元运算符判断: 注解:三元运算符的语法是 条件 ? 结果1 : 结果2;优点代码简洁,缺点可读性差 例子:int a,b,c; a=2;b=3; c=a>b?100:200; 语意:如果a>b,c=100;a<b,c=200

  • 本文向大家介绍python判断正负数方式,包括了python判断正负数方式的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,大家还是直接看代码吧! 补充知识:判断一个数值是否为正数、负数、零、整数 最近在看阮一峰老师的《ES6标准入门》的时候,看到ES6新增了两个方法。 用来判断一个数值。 一、判断整数------Number.isInteger() Number.isInteger()

  • 返回一个布尔值,确定专递的值是否为原始值。 在不是原始类型的字符串数组上使用 Array.includes() , 使用 typeof 提供类型。 由于 typeof null 被求值为 'object',所以需要直接比较。 const isPrimitive = val => !['object', 'function'].includes(typeof val) || val === null

  • 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。 下面是大多数编程语言中典型的判断结构的一般形式: 判断语句 C++ 编程语言提供了以下类型的判断语句。点击链接查看每个语句的细节。 语句 描述 if 语句 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 if...else 语句 一个 if 语句 后可跟一个可选

  • 代码如下: 功能点是localStorage存的值 赋值到 row.processName 这样写是错的,请问大佬们,没有被修改过的值保留row.processName,修改了后走myName的值 比如修改这个

  • 本文向大家介绍Python判断Abundant Number的方法,包括了Python判断Abundant Number的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python判断Abundant Number的方法。分享给大家供大家参考。具体如下: Abundant Number,中文译成:盈数(又称 丰数, 过剩数abundant number)是一种特殊的 自然数,除去它本