zoukankan      html  css  js  c++  java
  • python https协议和InsecurePlatformWarning问题

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

    一、针对https协议的网站需要验证证书

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

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

    二、InsecurePlatformWarning 问题

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

    G:Python27libsite-packagesurllib3connectionpool.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:Python27libsite-packagesurllib3connectionpool.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-warnings

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

      解决方法:可以通过 disable_warnings 方法关闭 warning,只需要在代码中添加这一句即可,requests.packages.urllib3.disable_warnings()

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

    #!/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

      

  • 相关阅读:
    plsql excel导入报错:未发现数据源名称并且未指定默认驱动程序
    exception java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    Android DiskLruCache 源代码解析 硬盘缓存的绝佳方案
    uestc 360(区间合并)
    UI_UITabBarController
    【C++ Primer】用于大型程序的工具
    Java 从基础到进阶学习之路---类编写以及文档凝视.
    Android 项目的代码混淆,Android proguard 使用说明
    android:Activity四种启动模式简单介绍
    已有数据库(单机)部署Database Vault
  • 原文地址:https://www.cnblogs.com/zengguowang/p/8317505.html
Copyright © 2011-2022 走看看