爬虫之ssh证书警告错误

在写爬虫时偶尔会碰见ssh证书警告的错误,得不到我们想要的信息,这里转载一个我在博客园见到的一篇博客,三种方式解决这个问题。

错误信息:

requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",)
错误分析:

ssh证书是美国网景公司发放的一个安全证书,有可这个证书即可证明网站是安全的,但是认证是需要收费的,所以一些网站就会自己伪造证书,这个时候浏览器就会警告,而我们爬虫就爬不到想要的信息。

解决办法:

方式一:

加上一个参数:verify=证书路径,没有证书的话verify=False

#方法一<br>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)
方式二:
ssl._create_default_https_context = ssl._create_unverified_context#注意用了这个就不能用requests了,得用urllib2.Request

完整代码如下:

# 方法二(推荐):
 
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)
方式三:

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

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

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

import logging
import requests
logging.captureWarnings(True)
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值