Скребок: SSL: ошибка CERTIFICATE_VERIFY_FAILED для http://en.wikipedia.org

Я практикую код из "Web Scraping с Python", и у меня проблема с этим сертификатом:

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("")

Ошибка:

  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)>

Кстати, я тоже занимался скрипикой, но продолжал сталкиваться с проблемой: команда не найдена: scrapy (я пробовал всевозможные решения в Интернете, но никто не работает... действительно разочаровывает)

Ответ 1

Однажды я наткнулся на эту проблему. Если вы используете macOS, перейдите в Macintosh HD> Приложения> Папка Python3.6 (или любую другую версию python, которую вы используете)> дважды щелкните файл "Install Certificates.command". : D

Ответ 2

Чтобы решить это:

Все, что вам нужно сделать, это установить сертификаты Python! Распространенная проблема в macOS.

Откройте эти файлы:

Install Certificates.command
Update Shell Profile.command

Просто запустите эти два сценария, и у вас больше не будет этой проблемы.

Надеюсь это поможет!

Ответ 3

Взгляните на этот пост, похоже, что для более поздних версий Python сертификаты не установлены заранее, что, по-видимому, вызывает эту ошибку. Для установки пакета certifi вы должны выполнить следующую команду: /Applications/Python\ 3.6/Install\ Certificates.command

Сообщение 1: urllib и "SSL: CERTIFICATE_VERIFY_FAILED" Ошибка

Сообщение 2: Ошибка Airbrake: ошибка urlopen [SSL: CERTIFICATE_VERIFY_FAILED] завершена проверка сертификата: не удалось получить сертификат локального эмитента

Ответ 4

Два шага помогли мне: - собирается Macintosh HD> Приложения> Папка Python3.7 - нажмите "Установить Certificates.command"

Ответ 5

К сожалению, я не решил проблему. но мне удалось сделать работу с кодами (почти у всех моих кодов есть этот probelm btw) проблема локального сертификата эмитента происходит под python3.7, поэтому я вернулся к python2.7 QAQ и все, что нужно было изменить, включая "from urllib2 import urlopen", вместо "от urllib.request import urlopen" так грустно...

Ответ 6

Для тех, кто использует anaconda, вы должны установить пакет certifi, см. больше на:

https://anaconda.org/anaconda/certifi

Для установки введите эту строку в своем терминале:

conda install -c anaconda certifi

Ответ 7

Эта терминальная команда:

open /Applications/Python\ 3.7/Install\ Certificates.command

Нашел здесь: fooobar.com/questions/240866/...

Разрешил это для меня. С моим конфигом

pip install --upgrade certifi

не имел никакого влияния.

Ответ 8

Измените свой URL с "http://en.wikipedia.org" на "https://en.wikipedia.org".

Ответ 9

Используйте библиотеку запросов. Попробуйте это решение или просто добавьте https:// перед URL:

import requests
from bs4 import BeautifulSoup
import re

pages = set()
def getLinks(pageUrl):
    global pages
    html = requests.get("http://en.wikipedia.org"+pageUrl, verify=False).text
    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("")

Проверьте, работает ли это для вас

Ответ 10

Для начинающих пользователей вы можете перейти в папку "Приложения" и развернуть папку Python 3.7. Теперь сначала запустите (или дважды щелкните) Install Certificates.command, а затем обновите Shell Profile.command

enter image description here

Ответ 11

Как вы решаете эту проблему для Windows?