2017-02-02 13 views
3

私はPythonを学んでおり、コマンドリクエストを使ってウェブサイトへのアクセスをリクエストしようとしています。私は、次のことをやっている:Pythonリクエストレスポンス504

import requests 
requests.get("http://www.charitystars.com") 

私はスープコマンドsoup = BeautifulSoup(r.content)は空行を返すため、エラーでなければなりません<Response [504]>を、取得が。他のウェブサイトで試してみたところ、<Response [200]>があり、スープが効いています。だから私は最初のウェブサイトでコマンドが動作しない理由と、レスポンス504が実際に何を意味するのだろうかと思います。

+0

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes – jwodder

+0

@jwodderありがとうございます。それでも、私はそれを取得しません。どういう意味ですか?それはちょうど一時的にダウンですか?または、このことを行う方法がありますか? – tony

+1

'5xx'は、ほとんどの場合サーバーに内部的な問題があることを意味し、管理者がこの問題で何かを行うまでには道を譲る必要があります。 – furas

答えて

4

このページはスクリプト/ボットが好きではなく、user-agentというヘッダーをチェックしています。

この情報は、デスクトップ、タブレット、スマートフォンで異なる正しいページを表示するためにも必要です。

ところで
import requests 

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

r = requests.get("http://www.charitystars.com/", headers=headers) 

print(r.status_code) 

requestsデフォルトは"User-Agent": "python-requests/2.12.1"

を使用してあなたの要求を確認するポータルhttp://httpbin.orgを使用することができます。

import requests 

r = requests.get("http://httpbin.org/get") 

print(r.text) 
+0

ヘッダーを指定すると200コードが返される理由を教えてください。ありがとうございました! – tony

+0

一部のサーバーでは、このヘッダーをチェックしてブラウザとその機能を認識します。次に、ページを表示するためにさまざまな方法を使用できます。彼らはスクリプト/ボットを認識し、アクセスを拒否するためにもそれを使用します。 – furas

+0

BTW: 'r = requests.get(" http://httpbin.org/get ")'と 'print(r.text)'を試してみて、 'requests'はデフォルトで' 'User-Agent" "python-requests/2.12.1" – furas

関連する問題