0
2

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]beautifulsoupの取得結果が403 Forbiddenの原因と対策

Posted at

#背景
ココナラのサービスランキングを確認したく、スクレイピングをやろうとしたら
403 Forbiddenが出力されたので原因と対策を備忘録しておく

症状

下記コードでsoupしたら403 Forbiddenが出力された

import requests
from bs4 import BeautifulSoup

target_url = 'https://coconala.com/categories/231?ref=header'
r = requests.get(target_url)

soup = BeautifulSoup(r.text,"html.parser")
print(soup)

よくやる典型例ですね

import requests
from bs4 import BeautifulSoup

htmlを取得するためにrequestsモジュールをインポート
取得したhtmlを解析するためにBeautifulsoupをインポート

target_url = 'https://coconala.com/categories/231?ref=header'
r = requests.get(target_url)
soup = BeautifulSoup(r.text,"html.parser")
print(soup)

htmlを取得するURLを定義してgetメソッドで取得
取得したhtmlをBeautifulsoupで解析した結果を表示

本来ならhtml文が表示されると思ったところ
結果は下記になった。

結果

<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
</body>
</html>

原因

どうやら、ユーザーエージェントに問題があるらしい
ユーザーエージェントをFireFoxに変更したら取得できるとのこと

対策

原因が分かったのでユーザーエージェントを変更する方法を調べた
結果、request.get(URL,headers=ユーザーエージェント(辞書型))
こうするだけで上手くいきました。

下記にコードを載せておきますので参考に

import requests
from bs4 import BeautifulSoup

ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
headers = {'User-Agent': ua}

target_url = 'https://coconala.com/categories/231?ref=header'
r = requests.get(target_url,headers=headers)
soup = BeautifulSoup(r.text,"html.parser")
print(soup)
<!DOCTYPE doctype html>

<html data-n-head="%7B%22lang%22:%7B%22ssr%22:%22ja%22%7D%7D" data-n-head-ssr="" lang="ja">
<head>
<title>プログラミングの代行依頼はオンラインでお得に!PythonやPHP、bot開発など豊富 | ココナラ</title><meta charset="utf-8" data-n-head="ssr"/><meta content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1" data-n-head="ssr" name="viewport"/><meta content="https://coconala.com" data-hid="og:site_name" data-n-head="ssr" 80d7194] .dropdown-content{display:-webkit-box;display:-ms-flexbox;display:flex;overflow-y:auto}.c-trigger[data-v-680d7194]{color:#111;-webkit-transition:opacity .2s;transition:opacity .2s}.c-trigger[data-v-680d7194]:link,.c-trigger[data-v-680d7194]:visited{opacity:1}.c-trigger[data-v-680d7194]:hover{opacity:.7}.c-trigger[data-v-680d7194]:active,.c-trigger[data-v-680d7194]:focus{opacity:1}@media (max-width:600px){.c-trigger[data-v-680d7194]:hover{opacity:1}}.c-trigger_icon[data-v-680d7194]{margin-left:4px}.c-loading[data-v-680d7194]{width:100%;min-height:120px;background-color:#fff}
[data-v-4e309438] .dropdown-content{display:-webkit-box;display:-ms-</script>(省略)
</body>
</html>

0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?