スクレイピング:SSL:http://en.wikipedia.orgのCERTIFICATE_VERIFY_FAILEDエラー


120

「Pythonを使用したWebスクレイピング」のコードを練習していますが、この証明書の問題が引き続き発生します。

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

ところで、私もスクレイプを練習していましたが、問題が発生し続けました:コマンドが見つかりません:スクレイプ(オンラインであらゆる種類のソリューションを試しましたが、どれも機能しません...本当にイライラします)

回答:


429

昔々、私はこの問題に出くわしました。macOSを使用している場合は、MacintoshHD>アプリケーション> Python3.6フォルダー(または使用しているPythonのバージョン)に移動し、[Certificates.commandのインストール]ファイルをダブルクリックします。:D


43

未確認のSSLを使用するには、これをコードに追加できます。

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

30

これを解決するには:

あなたがする必要があるのはPython証明書をインストールすることだけです!macOSの一般的な問題。

これらのファイルを開きます。

Install Certificates.command
Update Shell Profile.command

これらの2つのスクリプトを実行するだけで、この問題は発生しなくなります。

お役に立てれば!



16

初心者ユーザーの場合は、Applicationsフォルダーに移動して、Python3.7フォルダーを展開できます。ここで、最初にInstall Certificates.commandを実行(またはダブルクリック)してから、Update ShellProfile.commandを実行します。

ここに画像の説明を入力してください


5

2つのステップが私のために働いた:-MacintoshHD>アプリケーション> Python3.7フォルダーに行く-「証明書のインストール.command」をクリックします



4

この投稿を見てください。Pythonの新しいバージョンでは、証明書がプリインストールされていないため、このエラーが発生しているようです。次のコマンドを実行して、certifiパッケージをインストールできるはずです。/Applications/Python\ 3.6/Install\ Certificates.command

投稿1:urllibおよび「SSL:CERTIFICATE_VERIFY_FAILED」エラー

投稿2:エアブレーキエラー:urlopenエラー[SSL:CERTIFICATE_VERIFY_FAILED]証明書の検証に失敗しました:ローカル発行者の証明書を取得できません



2

悲しいことに、私は問題を解決しませんでした。しかし、なんとかコードを機能させることができました(ほとんどすべてのコードにこのprobelmがあります)ローカル発行者証明書の問題はpython3.7で発生するため、python2.7 QAQに戻し、「from urllib2importurlopen」を含むすべての変更が必要でした「fromurllib.requestimport urlopen」の代わりに、とても悲しい...


2

Macで実行している場合はInstall Certificates.command、スポットライトで検索してEnterキーを押すだけです。


0

リクエストライブラリを使用します。このソリューションを試すか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("")

これがあなたのために働くかどうか確認してください


0

Stack Overflowのすべての専門家と比較して、私は比較的初心者です。

2つのバージョンのjupyterノートブックを実行しています(1つはAnaconda Navigatorの新規インストール、もう1つは????)。これは、Anacondaが私のMacにローカルインストールとしてインストールされたためだと思います(Anacondaの指示に従って)。

私はすでにpython3.7をインストールしていました。その後、ターミナルを使用してjupyterノートブックを開き、Macに別のバージョンをグローバルに配置したと思います。

ただ、試行錯誤しながら学んでいるだけなのでわかりません!

私はターミナルコマンドを実行しました:

conda install -c anaconda certifi 

(上記のとおりですが、機能しませんでした。)

私のpython3.7はOSCatalina10.15.3にインストールされています:

  • /Library/Python/3.7/site-packages AND
  • 〜/ Library / Python / 3.7 / lib / python / site-packages

証明書は次の場所にあります。

  • 〜/ Library / Python / 3.7 / lib / python / site-packages / certifi-2019.11.28.dist-info

Install Certificate.commandを見つけようとしましたが、ファイル構造を調べても見つかりませんでした...アプリケーションではありません...上記のリンクではありません。

私はついにSpotlightで見つけてインストールしました(誰かが上で提案したように)。そして、自動的にダブルクリックして、次と同じフォルダに別の証明書をインストールしました。

  • 〜/ Library / Python / 3.7 / lib / python / site-packages /

上記のどれも私のために何も解決しませんでした...私はまだ同じエラーを受け取りました。

だから、私は次の方法で問題を解決しました:

  1. jupyterノートブックを閉じます。
  2. AnacondaNavigatorを開きます。
  3. (ターミナルではなく)ナビゲーターGUIからjupyterノートブックを開きます。
  4. ノートブックを開いてコードを実行します。

なぜこれがうまくいったのかは言えません。しかし、それは私にとって問題を解決しました。

次回は面倒なことを誰かから救いたいだけです。なぜそれがうまくいったのか誰かが私に言うことができれば、それは素晴らしいことです。

2つのバージョンのjupyternotebookが問題であることがわかっていたため、他のターミナルコマンドを試しませんでした。私はそれを修正する方法がわかりません。


0

私にとっての問題は、私がREQUESTS_CA_BUNDLE自分の中に設定していたことでした.bash_profile

/Users/westonagreene/.bash_profile:
...
export REQUESTS_CA_BUNDLE=/usr/local/etc/openssl/cert.pem
...

REQUESTS_CA_BUNDLE空白に設定したら(つまり.bash_profile、から削除して)、requests再び作業しました。

export REQUESTS_CA_BUNDLE=""

この問題はrequests、CLI(コマンドラインインターフェイス)を介してPythonを実行した場合にのみ発生しました。私が実行requests.get(URL, CERT)した場合、それはうまく解決しました。

Mac OS Catalina(10.15.6)。3.6.11のPyenv。私が得ていたエラーメッセージ:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)

他の場所での私の答え:https//stackoverflow.com/a/64151964/4420657


0

Debian 10バスターを使用していて、youtube-dlでファイルをダウンロードしようとすると、次のエラーが発生します。 sudo youtube-dl -k https://youtu.be/uscis0CnDjk

[youtube] uscis0CnDjk:Webページのダウンロードエラー:Webページをダウンロードできません:<urlopenエラー[SSL:CERTIFICATE_VERIFY_FAILED]証明書の検証に失敗しました:ローカル発行者証明書を取得できません(_ssl.c:1056)>(URLError(SSLCertVerificationError(1、 ' [SSL:CERTIFICATE_VERIFY_FAILED]証明書の検証に失敗しました:ローカル発行者の証明書を取得できません(_ssl.c:1056) ')))

python2とpython3.8の証明書は正しくインストールされていますが、永続的に同じエラーが発生します。最後に(これは最善の解決策ではありませんが、youtube-dlのオプションとして提供されている証明書チェックを削除することでした)、このコマンドを使用します sudo youtube-dl -k --no-check-certificate https://youtu.be/uscis0CnDjk



-1

これは機能します。環境変数PYTHONHTTPSVERIFYを0に設定します。

  • Linuxコマンドを入力する:
export PYTHONHTTPSVERIFY = 0

または

  • Pythonコードでの使用:
import os
os.environ["PYTHONHTTPSVERIFY"] = "0"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.