2016-12-07 4 views
0

私はしかしバック200PythonのURLは、それは、ウェブサイトが404

を私に与えURL

import requests 
answer = requests.get('http://www.website.com') 
answer.status_code 
>>>200 

の状態を返すために、次のコードを使用していても、メソッドがステータス200を返し取得します矛盾が由来とどのように私は代わりに200の結果としてanswer.status_code = 404を取得するには、この問題を解決することができますか?どこ404

answer.content 
>>>b'<html><head>\r\n<title>404 Not Found</title>\r\n</head><body>\r\n<h1>Not Found</h1>\r\n<p>The requested URL index.php was not found on this server.</p>\r\n<hr>\r\n<address>Apache/2.2.22 (Linux) Server at Port <small onclick="document.getElementById(\'login\').style.display = \'block\';">80</small></address>\r\n</body></html><div id="login" style="display:none;"><pre align=center><form method=post>Password: <input type=password name=pass><input type=submit value=\'>>\'></form></pre></div>' 

を返す必要があります誰かが教えてもらえますか私はサーバーに直接アクセスすることはできませんが、管理者に問い合わせることができます。

ありがとうございました!デフォルトの要求によって

+1

それが可能です返される内容に '404 Not Found'という文字が含まれていても、フェッチしているサイトがステータス200を返していることを確認してください。 – JeremyK

+0

curlのような-vオプションを使用してすべてのヘッダーとコンテンツを取得します。ヘッダーが一致しないことを確認する。おそらく404がPHPコードの内部で生成されており、そのコードがステータスコードを正しく設定していない可能性があります。 – Nath

答えて

1

Requests Doc

リダイレクトと歴史 はHEAD以外のすべての動詞の場所のリダイレクトを実行します。

Responseオブジェクトのhistoryプロパティを使用してリダイレクトを追跡できます。

Response.historyリストには、要求を完了するために作成されたResponseオブジェクトが含まれています。リストは、最も古い応答から最も古い応答にソートされます。

例えば、GitHubでは、HTTPSへのすべてのHTTP要求をリダイレクトします。

>>> r = requests.get('http://github.com') 

>>> r.url 
'https://github.com/' 

>>> r.status_code 
200 

>>> r.history 
[<Response [301]>] 

あなたがGET、OPTIONS、POST、PUT、PATCHまたはDELETEを使用している場合、あなたはallow_redirectsパラメータで取り扱うリダイレクトを無効にすることができます。

あなたがHEADを使用している場合
>>> r = requests.get('http://github.com', allow_redirects=False) 

>>> r.status_code 
301 

>>> r.history 
[] 

、あなたにもリダイレクトを有効にすることができます。

>>> r = requests.head('http://github.com', allow_redirects=True) 

>>> r.url 
'https://github.com/' 

>>> r.history 
[<Response [301]>] 
+0

これはコピー貼り付けのようですが、これはどのように彼の問題に関連していますか?リダイレクトが問題の一部であると疑う理由はありません。あなたがこれをしなければ、あなたはその場合をする必要があります – Nath

関連する問題