2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pythonでrequests使ってスクレイピングやろうとしたらSSLErrorでハマったので、対処法メモ

Posted at

背景

題名の通り。結構ググっても、日本語でも英語でもなかなか解決方法見つからなかったので、再発時に参照できるようメモ

エラーが発生したコード

実際はwikipediaではないけど、https://~のサイトをスクレイピングした際に発生した。
今触ってるPCだと、そのサイトが対象でもエラー出ずにスクレイピングできる。なぜだ・・・環境の問題?

import requests

url = 'https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8'
response = requests.get(url)

result = response.text
print(result)

そのときのエラーメッセージは控えられてないけど、SSLErrorbad handshakeという単語が含まれてたのは覚えてる

対処法

verify=False作戦は使いたくなかったので色々調べ倒したところ、urllibsslを使ったらエラー発生せずにスクレイピングできた。
ココさえ乗り越えれば、あとはBeaurifulSoup4使って欲しい要素だけ抜き出せばOK

import urllib.request
import ssl

url = 'https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8'
context = ssl.SSLContext()
req = urllib.request.Request(url=url)
with urllib.request.urlopen(req, context=context) as f:
    result = f.read().decode()
print(result)

参考にしたサイト

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?