首页 >后端开发 >Python教程 >如何修复使用 SSL 抓取网站时的'CERTIFICATE_VERIFY_FAILED”错误?

如何修复使用 SSL 抓取网站时的'CERTIFICATE_VERIFY_FAILED”错误?

Barbara Streisand
Barbara Streisand原创
2024-10-28 15:07:30501浏览

How to Fix

证书验证失败:对抓取中的 SSL 错误进行故障排除

抓取使用安全套接字层 (SSL) 协议的网站时,开发人员可能会遇到“CERTIFICATE_VERIFY_FAILED”错误。此错误表明网站的 SSL 证书验证失败。

尝试使用以下 Python 代码抓取维基百科时会出现此错误的一个常见示例:

<code class="python">import urllib.request
import bs4
import re

pages = set()
def getLinks(pageUrl):
    global pages
    html = urllib.request.urlopen("http://en.wikipedia.org"+pageUrl)
    bsObj = bs4.BeautifulSoup(html)
    for link in bsObj.findAll("a", href=re.compile("^(/wiki/)")):
        if 'href' in link.attrs:
            if link.attrs['href'] not in pages:
                #We have encountered a new page
                newPage = link.attrs['href']
                print(newPage)
                pages.add(newPage)
                getLinks(newPage)
getLinks("")</code>

运行此命令时代码,您可能会遇到以下错误:

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1049)>

macOS 用户的解决方案

如果您使用的是 macOS,此错误的解决方案很简单。导航至 Macintosh HD >应用领域>> Python 3.6 文件夹(或您使用的任何版本的 Python),然后双击“安装证书.command”文件。此命令会将必要的证书安装到您的系统钥匙串中。

运行此命令后,在抓取维基百科或其他 SSL 安全网站时不应再出现“CERTIFICATE_VERIFY_FAILED”错误。

以上是如何修复使用 SSL 抓取网站时的'CERTIFICATE_VERIFY_FAILED”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn