主页 > 软件开发  > 

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

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

文章目录 5.Requests 处理 Cookie6.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: 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(" .12306 ",verify=False) print(response.status_code) # 设置本地证书 resp = requests.get(' .12306 ', cert=('**.crt', '**.key'))
标签:

10.每天进步一点点---Python-RequestsHTTP请求库-2由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“10.每天进步一点点---Python-RequestsHTTP请求库-2