我为我玩的游戏写了一个核心检查器,基本上你在.txt文件中输入一个用户名列表&它将结果输出到found.txt。
但是,如果页面响应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"
错误响应如下所示。
现在我理解显示的错误似乎与404的响应无关,但是这只发生在从请求返回404响应的用户,任何其他请求都可以正常工作。所以我可以假设问题在404响应异常中。
我认为问题可能在于404是一个自定义页面,你也会被重定向?
所以原始页面是" example.com/index.php"但404是" example.com/error.php"?
不确定如何解决。
出于测试目的,要使用的格式为
ID:USER:DISPLAY
放入check.txt
答案 0 :(得分:0)
似乎total
最终可能成为None
。在这种情况下,您无法检查其中是否有'err'
。要修复崩溃,请尝试将该行更改为:
if total is not None and "err" not in total:
更具体地说,get_total
正在返回None
,这意味着要么
parts[1]
是None
或 except urllib2.HTTPError, e:
已执行,但 e.code
不是404。在后一种情况下,None
会在捕获到异常时返回,但您只处理特定的404案例并忽略其他案例。