てぃぐれのプログラマwiki

ワクワクに従う

unable to get local issuer certificate (_ssl.c:1123)

久しぶりにスクレイピングpythonで行おうとしたところ

unable to get local issuer certificate (_ssl.c:1123)

でつまずきました。以前はこんなことなかったのに!サーバーに上げてる方はうまくいくのに!と思いつつ、解決法を探していました。

 

ソース

http = urllib3.PoolManager()
instance = http.request('GET', url)→ここで起きている
soup = BeautifulSoup(instance.data, 'html.parser')

エラー内容

raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='***.com', port=443): Max retries exceeded with url: /dp/system.htm (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)')))

どうやらSSLの認証が上手くいっていないよう。

 

解決方法

コマンド

# pythonのバージョンが3.9...なので
$ /Applications/Python\ 3.9/Install\ Certificates.command

下記サイトのおかげでうまく行きました。

failed: unable to get local issuer certificate (_ssl.c:1123)と出たので解決した話

macOS用公式インストーラーのPython 3.6でCERTIFICATE_VERIFY_FAILEDとなる問題 - Qiita