2016-08-03 13 views
-1

http.client.BadStatusLine: ''例外を処理します。 私はpython3です。私のコードは"HTTP Badstatus行"例外を処理できません

import http.client 

try: 
    req = urllib.request.Request(url, headers={'User-Agent': 'Chrome/51'}) 
    html = urllib.request.urlopen(req).read() 
    soup = BeautifulSoup(html,"html.parser") 
    return soup 
except http.client.HTTPException as eror: 
    print("Boom") 

ですが、httpExceptionはpython3ではありませんか? Figure

私はstackOverFloeQuestionthisを読んでいますが、それをキャッチすることはできません。どんな助け?

+0

https://docs.python.org/3/library/http.client.html#http.client.HTTPException 受信した実際のエラーは何ですか? – DeepSpace

+0

@DeepSpace。私はこの例外をキャッチしたい。それだ。上の図の赤い記号は、 'HTTPException'が定義されていないことを示しています。 – Ali

+0

コードをコピーして貼り付けても、その問題は再現されません。 – DeepSpace

答えて

0

あなたは心を整える必要があります:-)。 http.clientまたはurllib.requestのいずれかを使用できますが、1つを使用してからもう一方のエラーをキャッチしないでください。 urllib.requestを使用したい場合、キャッチするクラスはurllib.error.HTTPErrorです。

Requestsは、より高いレベルのhttpライブラリであることをお勧めします。

+0

私は 'BadStatusLine'例外に特化したいと思っています。 HTTPError全体ではありません – Ali

+0

これは論理的には正しいですが、 'http.client.HTTPException'がなぜ定義されないのかはまだ説明していません。特にOPのコードをコピーしても問題が再現されません。 – DeepSpace

+0

はい、論理的に正しいと思われます。ありがとう。 – Ali