web-dev-qa-db-fra.com

Raclage: SSL: erreur CERTIFICATE_VERIFY_FAILED pour http://en.wikipedia.org

Je pratique le code de 'Web Scraping with Python', et je continue à avoir ce problème de certificat:

from urllib.request import urlopen 
from bs4 import BeautifulSoup 
import re

pages = set()
def getLinks(pageUrl):
    global pages
    html = urlopen("http://en.wikipedia.org"+pageUrl)
    bsObj = 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("")

L'erreur est:

  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 1319, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1049)>

Btw, je pratiquais aussi scrapy, mais je continuais à avoir le problème: commande introuvable: scrapy (j'ai essayé toutes sortes de solutions en ligne mais aucune ne fonctionne ... vraiment frustrante)

7
Catherine4j

Il était une fois je suis tombé sur cette question. Si vous utilisez macOS, accédez à Macintosh HD> Applications> Dossier Python3.6 (ou à la version de python utilisée)> double-cliquez sur le fichier "Installer Certificates.command". :RÉ

19
Jey Miranda

Pour résoudre ceci: 

Tout ce que vous avez à faire est d'installer des certificats Python! Un problème commun sur macOS. 

Ouvrez ces fichiers: 

Install Certificates.command
Update Shell Profile.command

Exécutez simplement ces deux scripts et vous n’aurez plus ce problème. 

J'espère que cela t'aides!

4
Ozi

Jetez un coup d'œil à ce billet, il semble que pour les versions ultérieures de Python, les certificats ne sont pas pré-installés, ce qui semble provoquer cette erreur. Vous devriez pouvoir exécuter la commande suivante pour installer le paquet certifi: /Applications/Python\ 3.6/Install\ Certificates.command

Message 1: urllib et erreur "SSL: CERTIFICATE_VERIFY_FAILED"

Poste 2: Erreur airbrake: erreur urlopen [SSL: CERTIFICATE_VERIFY_FAILED] échec de la vérification du certificat: impossible d'obtenir le certificat de l'émetteur local

2
Patrick Suzuki

malheureusement, je n'ai pas résolu le problème, mais j'ai réussi à faire en sorte que les codes fonctionnent (presque tous mes codes ont ce problème, par exemple) le problème du certificat d'émetteur local se produit sous python3.7 retour à python2.7 QAQ et tout ce qui devait changer, y compris "depuis urllib2 import urlopen" au lieu de "depuis urllib.request import urlopen".

1
Catherine4j

Changez votre URL de "http://en.wikipedia.org" à "https://en.wikipedia.org"

1
Nick Garlis