2016-08-29 13 views
0

私は基本的に、あなたはそれがfound.txtで結果を出力.txtファイル&にユーザ名のリストを入力して、私が遊ぶゲームのためhiscoreチェッカーを書きました。Pythonのカスタム404応答エラー

しかし、ページが404を応答する場合には、代わりにリストを続ける「0」&として出力を返すエラーがスローされます。動作していないようです

スクリプトの例、

#!/usr/bin/python 

import urllib2 

def get_total(username): 
try: 
    req = urllib2.Request('http://services.runescape.com/m=hiscore/index_lite.ws?player=' + username) 
    res = urllib2.urlopen(req).read() 
    parts = res.split(',') 
    return parts[1] 
except urllib2.HTTPError, e: 
    if e.code == 404: 
    return "0" 
except: 
    return "err" 

filename = "check.txt" 

accs = [] 
handler = open(filename) 
for entry in handler.read().split('\n'): 
if "No Displayname" not in entry: 
    accs.append(entry) 
handler.close() 

for account in accs: 
display_name = account.split(':')[len(account.split(':')) - 1] 
total = get_total(display_name) 
if "err" not in total: 
    rStr = account + ' - ' + total 
    handler = open('tried.txt', 'a') 
    handler.write(rStr + '\n') 
    handler.close() 
    if total != "0" and total != "49": 
    handler = open('found.txt', 'a') 
    handler.write(rStr + '\n') 
    handler.close() 
    print rStr 
else: 
    print "Error searching" 
    accs.append(account) 

print "Done" 

HTTPERROR例外、以下のよう

except urllib2.HTTPError, e: 
    if e.code == 404: 
    return "0" 
except: 
    return "err" 

のエラー応答。

Python Error

今、私が示したエラーは404の応答に関連していないようですが、これが唯一のリクエストから404応答を返すユーザーで発生し、他の要求が正常に動作を理解します。だから私は問題が404の応答例外内にあると仮定することができます。

私はこの問題が、404がリダイレクトされたカスタムページであるという事実にあると思いますか?

元のページは "example.com/index.php"ですが、404は "example.com/error.php"ですか?

修正方法がわかりません。テスト目的で、使用する形式であるため

ID:USER:DISPLAY

check.txtに置かれる

答えて

0

totalNoneになってしまうことができると思われます。その場合、それに'err'があることを確認することはできません。 get_totalはどちらか

  • parts[1]が実行されNoneまたは
  • except urllib2.HTTPError, e:であることを意味し、Noneを返して、

    if total is not None and "err" not in total: 
    

    は、より具体的には:クラッシュを修正するには、にその行を変更してみてくださいしかしe.codeは404

ではありません

後者の場合、例外がキャッチされたとしてNoneが返されますが、非常に特定の404のケースのみを扱い、他のケースは無視します。

関連する問題