Python スクレイピング

requestsでのスクレイピング時に403エラーが返された場合の解決策

この記事は約4分で読めます。

 

 

こんにちは、ミナピピン(@python_mllover)です。

 

ECサイトなどのスクレイピング対策が厳しいサイトをPythonでスクレイピングする際にrequestsでURLを叩いていつも通りにスクレイピングしようとするとブラウザでは何ともなく表示されるURLでも、requests経由だとレスポンスに403エラーが返されることがあります。

 

requestsでurlを叩くと403が返ってくる

 

例)

import requests
url = 'https://www.monotaro.com/g/04557970/'
res = requests.get(url=url)
print(res) # 403が返される or レスポンスが返ってこずにタイムアウトになる

 

今回はそんなときの対処法としてよく使う手段をまとめて紹介していきます。

よくある403の原因

 

①リクエストヘッダーがない

 

多分これがよくある原因No1だと思いますが、解決策はrequest.get()の引数にheadersを付け加えてheaderの中身に’User-Agent’という自分がどういうブラウザでアクセスしているか伝える識別子があるのでそこに以下のような感じで設定します。これがないとbot判定され403が返されるというのがよくあるパターンです。

 

home_url = 'https://www.monotaro.com'

headers = {
    'User-Agent':'Mozilla/5.0'
}

res = requests.get(url=url, headers=headers)

 

②referがない

 

サイトによってはreferがないとアクセスをはじくという仕様のところも存在します。その場合は先ほどの’User-Agent’と同じように以下のような要領で”referer”というパラメーターを追加してあげます。

 

home_url = 'https://www.monotaro.com'
url = 'https://www.monotaro.com/g/04557970/'
headers = {
    'User-Agent':'Mozilla/5.0',
    "referer":home_url
}

res = requests.get(url=url, headers=headers)

 

③IP制限されている

 

Itunes storeなど世界的に有名なサイトはセキュリティも高く、そういったサイトはスクレイピングのためにサイト内のURLに短い周期で大量のリクエストを送ると、一定もしくは永久的にIPがBANされてリクエストを送っても403が返されることがあります。その場合はプロキシやTorでIPを一定間隔で変更することで対処可能です。

 

またサイトによってはTor経由のアクセスやVPS・レンタルサーバーからのアクセスはIPで弾いているところもあるので、そういう場合も403が返されます。(ローカルで動いたコードをクラウドにあげたら403で動かないなんていうのはよくある話・・・)

 

この場合はもうtime.sleepなどで向こうのIP制限の対象にならない程度で負荷を掛けないようにチマチマとスクレイピングするしかないと思います。

 

関連記事:【Python】WindowsでTorを使用してrequestsでスクレピングしてみた

 

終わり

 

有名なSNSやECサイトといった皆がよく使うサイトはそれだけスクレイピングの対象となりやすいため、向こうも何らかのスクレイピング対策をしているケースが多いです。

 

そういったサイトをうまくスクレイピングするためにはレスポンスデータの処理方法やHTMLなどへの理解だけではなくTorやリクエストヘッダーといった通信部分についても最低限の知識が必要ですね。では~

 

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました