2

requests ライブラリに少し問題があります。

たとえば、Python で次のようなステートメントがあるとします。

try:
   request = requests.get('google.com/admin') #Should return 404

except requests.HTTPError, e:
   print 'HTTP ERROR %s occured' % e.code

何らかの理由で例外がキャッチされていません。リクエストの API ドキュメントを確認しましたが、少しスリムです。私を助けることができるかもしれない図書館でより多くの経験を持っている人はいますか?

4

2 に答える 2

11

通訳はあなたの友達です:

import requests
requests.get('google.com/admin')
# MissingSchema: Invalid URL u'google.com/admin': No schema supplied

また、requests例外:

import requests.exceptions
dir(requests.exceptions)

requestsまた、 status が not の場合、デフォルトでは例外が発生しないことに注意して200ください。

In [9]: requests.get('https://google.com/admin')
Out[9]: <Response [503]>

それを行うraise_for_status()メソッドがあります。

In [10]: resp = requests.get('https://google.com/admin')

In [11]: resp
Out[11]: <Response [503]>

In [12]: resp.raise_for_status()
  ...
HTTPError: 503 Server Error: Service Unavailable
于 2013-04-25T04:13:13.963 に答える
2

Python 2.7.5 でコードを実行する:

import requests

try:
  response = requests.get('google.com/admin') #Should return 404
except requests.HTTPError, e:
  print 'HTTP ERROR %s occured' % e.code
  print e

結果:

File "C:\Python27\lib\site-packages\requests\models.py", line 291, in prepare_url raise MissingSchema("Invalid URL %r: No schema supplied" % url) requests.exceptions.MissingSchema: Invalid URL u'google.com/admin': No schema supplied

コードでこの例外を取得するには、次を追加する必要があります。

  except (requests.exceptions.MissingSchema) as e:
    print 'Missing schema occured. status'
    print e

また、欠落しているスキーマではなく、欠落しているスキームであることに注意してください。

于 2013-08-02T04:08:13.900 に答える