python https协议和InsecurePlatformWarning问题

  本人最近在学习python,今天想使用python来抓取糗事百科网站上的一些笑话故事的,因为糗事百科的网站url采起的是https协议,因此当我按照常规的方式抓取的时候,发现不行,报错了,找了不少方法都很差使,这对于一个初学者来讲真是很捉鸡的一件事情,最后google了很久,终于找到了解决的办法,接下来一块儿看一下html

1、针对https协议的网站须要验证证书python

  错误信息:'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)' ,这句话的意思就是证书验证失败了学习

  解决方法:在requests的请求方法中添加参数 verify=False ;例如:requests.get('https://www.qiushibaike.com/hot/page/1/',verify=False),网站

2、InsecurePlatformWarning 问题google

  在通过第一步添加了参数以后,能够请求到了网站的信息了,可是会出现两个warning级别的错误:url

G:\Python27\lib\site-packages\urllib3\connectionpool.py:858: 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)
G:\Python27\lib\site-packages\urllib3\connectionpool.py:858: 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)

  上边的警告提示大义是:未经验证的HTTPS请求正在进行。 强烈建议添加证书验证。 请参阅:https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warningsspa

  虽然这个warning提示不会影响程序的运行,可是对于有强迫症的人来讲仍是很不舒服的(本人有严重的强迫症),因此有没有什么办法不显示(去掉这些warning级别的错误呢?)??code

  解决方法:能够经过 disable_warnings 方法关闭 warning,只须要在代码中添加这一句便可,requests.packages.urllib3.disable_warnings()orm

  下边是简单的获取糗事百科第一页的数据的代码:htm

#!/usr/bin/env python
#coding=utf-8

import requests

page = 1
url = 'https://www.qiushibaike.com/hot/page/' + str(page)
try:
    # 避免warning级别的警告(不显示)
    requests.packages.urllib3.disable_warnings()

    # 使用requests库请求的
    response = requests.get(url,  verify=False)
    print response.text
except urllib2.URLError, e:
    if hasattr(e,"code"):
        print e.code
    if hasattr(e,"reason"):
        print e.reason
相关文章
相关标签/搜索