2017-12-12 1 views
0
import requests 

は、すべて私の要求に対して適切に動作している静かに失敗:のPython - 要求はそれほどのよう

url = 'http://www.billboard.com' 
response = requests.get(url) 
それが失速

urlバリ

url = 'http://www.stackoverflow.com' 
response = requests.get(url) 

は結果を返しません黙ってに失敗し、何も返されません。

requestsは例外レスポンスを私に投げ入れるにはどうすればいいですか? だから、私がブラックリストに載っているのか他の人がいるのか分かりますか?

response = requests.get(url) 

response.raise_for_status() 

別のオプションは、HTTPコードを保持しているstatus_code、次のとおりです。たとえば、

答えて

2

要求が悪いHTTPレスポンスのための例外を発生させませんが、手動でHTTPError例外を発生させるraise_for_statusを使用することができます。

response = requests.get(url) 

if response.status_code != 200: 
    print('HTTP', response.status_code) 
else: 
    print(response.text) 

サイトが悪いの要求に対してHTTP 200を返しますが、レスポンスボディにエラーメッセージがあるか、または全く体を持っていない場合は、応答の内容を確認する必要があります。

error_message = 'Nothing found' 
response = requests.get(url) 

if error_message in response.text or not response.text: 
    print('Bad response') 
else: 
    print(response.text) 

サイトの応答時間が長すぎる場合は、リクエストの最大タイムアウトを設定できます。サイトがその時間に応答しない場合は、ReadTimeout例外が発生します。

try: 
    response = requests.get(url, timeout=5) 
except requests.exceptions.ReadTimeout: 
    print('Request timed out') 
else: 
    print(response.text) 
+0

はあなたに感謝。上記のオプションは何も返さない。それは永遠に待っています。私はインターネット接続(ip)を変更したときにスムーズに動いたので、私はブロックされているかブラックリストに載っていると確信しています。したがって、回転エージェントの使用法などの回避策を使用して回答を編集する場合は、それを回答として受け入れます。 –

+0

サイトがあなたのIPを変更している場合は、ユーザーエージェントの変更は役に立ちません。また、ほとんどの出口はブラックリストに載っているので、私はトルーマを信頼しません。あなたがプライベートプロキシを持っていない場合は、ここでいくつかの無料のプロキシを見つけることができます:[free-proxy-list.net](https://free-proxy-list.net/)と同様のウェブサイトですが、彼らはまた非常に信頼性がありません。 –

+0

好奇心旺盛な製品。それは「無料」と名付けられていますが、U $ 8で月になります。とにかく、リンクのおかげで。この解決策を検討します。 –

関連する問題