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)
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É
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!
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"
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".
Changez votre URL de "http://en.wikipedia.org"
à "https://en.wikipedia.org"
.