我已准备好运行此代码,但在修复异常处理之前:
for l in bios:
OpenThisLink = url + l
try:
response = urllib2.urlopen(OpenThisLink)
except urllib2.HTTPError:
pass
bio = response.read()
item = re.search('(JD)(.*?)(\d+)', bio)
....
正如建议的here,我添加了try...except
,但是现在如果一个页面没有打开,我会得到这个错误:
bio = response.read()
NameError: name 'response' is not defined
所以程序继续执行。相反,我希望它返回for循环并尝试下一个url。我尝试了break
而不是pass
,但这结束了程序。有什么建议吗?
使用
continue
而不是break
。语句
pass
是一个no操作(意味着它什么也不做)。程序将继续执行下一个语句,这就是为什么会出现错误。break
退出循环并从紧接循环之后的下一条语句继续运行。在这种情况下,没有更多的语句,这就是程序终止的原因。continue
重新启动循环,但使用下一项。这正是你想要的。事实上,尝试比那更强大。您也可以在这里使用else块:
您得到的错误是因为当抛出异常时,响应变量不存在。如果要保留代码,则需要在调用read之前检查响应是否存在
我同意马克的观点,认为
continue
比pass
更好相关问题 更多 >
编程相关推荐