Ответ 1
Однажды я наткнулся на эту проблему. Если вы используете macOS, перейдите в Macintosh HD> Приложения> Папка Python3.6 (или любую другую версию python, которую вы используете)> дважды щелкните файл "Install Certificates.command". : D
Я практикую код из "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 (я пробовал всевозможные решения в Интернете, но никто не работает... действительно разочаровывает)
Однажды я наткнулся на эту проблему. Если вы используете macOS, перейдите в Macintosh HD> Приложения> Папка Python3.6 (или любую другую версию python, которую вы используете)> дважды щелкните файл "Install Certificates.command". : D
Чтобы решить это:
Все, что вам нужно сделать, это установить сертификаты Python! Распространенная проблема в macOS.
Откройте эти файлы:
Install Certificates.command
Update Shell Profile.command
Просто запустите эти два сценария, и у вас больше не будет этой проблемы.
Надеюсь это поможет!
Взгляните на этот пост, похоже, что для более поздних версий Python сертификаты не установлены заранее, что, по-видимому, вызывает эту ошибку. Для установки пакета certifi вы должны выполнить следующую команду: /Applications/Python\ 3.6/Install\ Certificates.command
Сообщение 1: urllib и "SSL: CERTIFICATE_VERIFY_FAILED" Ошибка
Сообщение 2: Ошибка Airbrake: ошибка urlopen [SSL: CERTIFICATE_VERIFY_FAILED] завершена проверка сертификата: не удалось получить сертификат локального эмитента
Два шага помогли мне: - собирается Macintosh HD> Приложения> Папка Python3.7 - нажмите "Установить Certificates.command"
К сожалению, я не решил проблему. но мне удалось сделать работу с кодами (почти у всех моих кодов есть этот probelm btw) проблема локального сертификата эмитента происходит под python3.7, поэтому я вернулся к python2.7 QAQ и все, что нужно было изменить, включая "from urllib2 import urlopen", вместо "от urllib.request import urlopen" так грустно...
Для тех, кто использует anaconda, вы должны установить пакет certifi
, см. больше на:
https://anaconda.org/anaconda/certifi
Для установки введите эту строку в своем терминале:
conda install -c anaconda certifi
Эта терминальная команда:
open /Applications/Python\ 3.7/Install\ Certificates.command
Нашел здесь: fooobar.com/questions/240866/...
Разрешил это для меня. С моим конфигом
pip install --upgrade certifi
не имел никакого влияния.
Измените свой URL с "http://en.wikipedia.org"
на "https://en.wikipedia.org"
.
Используйте библиотеку запросов.
Попробуйте это решение или просто добавьте 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("")
Проверьте, работает ли это для вас
Для начинающих пользователей вы можете перейти в папку "Приложения" и развернуть папку Python 3.7. Теперь сначала запустите (или дважды щелкните) Install Certificates.command, а затем обновите Shell Profile.command
Как вы решаете эту проблему для Windows?