我正试图抓取一个网站以获取信息。我下载了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)
我看到了一些关于双击安装证书文件的类似问题的解决方案。我做到了,但错误仍然存在。导致此错误的原因是什么?如何解决?
答案 0 :(得分:2)
urllib
无法验证服务器证书,则会引发异常。您可以在context
参数中使用自定义ssl上下文,也可以使用requests
并禁用验证。
将urllib
与ssl
一起使用:
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