SSLError证书验证失败

时间:2017-09-07 04:09:45

标签: python

我正试图抓取一个网站以获取信息。我下载了anacoda并使用了python。

这些是我的代码

   from urllib.request import urlopen as uReq
   from bs4 import BeautifulSoup as soup
   dibbsurl = 'https://www.dibbs.bsm.dla.mil/RFQ/RfqRecs.aspx?category=issue&TypeSrch=dt&Value=09-06-2017'
   uClient = uReq(dibbsurl)

尝试打开与网址的连接时显示以下错误。

  
    

ssl.SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:749)

  
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)

我看到了一些关于双击安装证书文件的类似问题的解决方案。我做到了,但错误仍然存​​在。导致此错误的原因是什么?如何解决?

1 个答案:

答案 0 :(得分:2)

如果

urllib无法验证服务器证书,则会引发异常。您可以在context参数中使用自定义ssl上下文,也可以使用requests并禁用验证。

urllibssl一起使用:

from urllib.request import urlopen as uReq
import ssl

context = ssl._create_unverified_context()
dibbsurl = 'https://www.dibbs.bsm.dla.mil/RFQ/RfqRecs.aspx?category=issue&TypeSrch=dt&Value=09-06-2017'
uClient = uReq(dibbsurl, context=context)

使用requests

import requests

dibbsurl = 'https://www.dibbs.bsm.dla.mil/RFQ/RfqRecs.aspx?category=issue&TypeSrch=dt&Value=09-06-2017'
uClient = requests.get(dibbsurl, verify=False)
data = uClient.content