前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫之ssh证书警告错误

爬虫之ssh证书警告错误

作者头像
人生不如戏
发布2018-05-30 14:55:31
7210
发布2018-05-30 14:55:31
举报
文章被收录于专栏:抠抠空间抠抠空间

错误信息:

错误信息如下:

代码语言:javascript
复制
requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",)

 错误分析:  

ssh证书是美国网景公司发放的一个安全认证证书,有了这个证书即可证明网站是安全的,但是认证是需要收费的,

所以一些网站就会自己仿造证书,这个时候浏览器就会给予警告,而我们爬虫就爬不到想要的信息

解决办法:

方式一:

加上一个参数:verify=证书路径,或verify=False

代码语言:javascript
复制
#方法一
import  requests
from bs4 import BeautifulSoup

url = 'https://inv-veri.chinatax.gov.cn/'
req = requests.get(url,verify=False)
req.encoding = 'utf-8'
soup = BeautifulSoup(req.text,'lxml')
print(soup)

方式二:

代码语言:javascript
复制
ssl._create_default_https_context = ssl._create_unverified_context#注意用了这个就不能用requests了,得用urllib2.Request

  完整代码如下:

代码语言:javascript
复制
# 方法二(推荐):

import ssl
import urllib2

ssl._create_default_https_context = ssl._create_unverified_context
req = urllib2.Request('https://inv-veri.chinatax.gov.cn/')
data = urllib2.urlopen(req).read()
print(data)

方式三:

我们可以通过设置忽略警告的方式来屏蔽这个警告:

代码语言:javascript
复制
import requests
from requests.packages import urllib3

urllib3.disable_warnings()
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)

或者通过捕获警告到日志的方式忽略警告:

代码语言:javascript
复制
import logging
import requests
logging.captureWarnings(True)
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 错误信息:
  •  错误分析:  
  • 解决办法:
    • 方式一:
      • 方式二:
        • 方式三:
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档