Pythonでウェブスクレイピングを行う際、urllib
を使用して特定のURLにアクセスしようとすると、時折HTTP Error 403: Forbidden
エラーに遭遇することがあります。このエラーは、アクセスしようとしているURLが「非ブラウザ」のリクエストを許可しない設定になっている場合に発生します。
この問題を解決するためには、HTTPリクエストヘッダーの内容を「ブラウザ」リクエストとして明示的に書き換えてリクエストを送る必要があります。
以下に、修正前と修正後のPythonコードを示します。
修正前のコード:
import urllib.request
url = "https://example.com"
html = urllib.request.urlopen(url)
修正後のコード:
import urllib.request
url = "https://example.com"
req = urllib.request.Request(
url,
headers={'User-Agent': 'Mozilla/5.0'}
)
html = urllib.request.urlopen(req).read()
この修正により、Pythonのurllib
が生成するデフォルトのユーザーエージェントを、一般的なウェブブラウザのユーザーエージェントに書き換えることができます。これにより、ウェブサーバはPythonスクリプトからのリクエストをブラウザからのものとして認識し、HTTP Error 403: Forbidden
エラーを回避できます。
この方法は、ウェブスクレイピングを行う際に非常に有用です。ただし、ウェブサイトの利用規約やロボット排除規約(robots.txt)を確認し、適切に使用してください。