在urllib2模块中出现Python、NameError错误,但仅在少数网站中出现
它正在工作,但由于某些原因,一些网站出现了以下错误:在urllib2模块中出现Python、NameError错误,但仅在少数网站中出现,python,urllib2,nameerror,Python,Urllib2,Nameerror,它正在工作,但由于某些原因,一些网站出现了以下错误: website = raw_input('website: ') with open('words.txt', 'r+') as arquivo: for lendo in arquivo.readlines(): msmwebsite = website + lendo try: abrindo = urllib2.urlopen(msmwebsite)
website = raw_input('website: ')
with open('words.txt', 'r+') as arquivo:
for lendo in arquivo.readlines():
msmwebsite = website + lendo
try:
abrindo = urllib2.urlopen(msmwebsite)
abrindo2 = abrindo.read()
except URLError as e:
pass
if abrindo.code == 200:
palavras = ['registration', 'there is no form']
for palavras2 in palavras:
if palavras2 in abrindo2:
print msmwebsite, 'up'
else:
pass
else:
pass
如何修复它?
将<代码>通过替换为<代码>继续。并且至少做一些错误日志记录,因为您会悄悄地跳过错误链接
如果您的请求导致了
URLError
,则未定义变量abrindo
,因此您会出现错误。将pass
替换为continue
。并且至少做一些错误日志记录,因为您会悄悄地跳过错误链接
如果您的请求导致
URLError
,则未定义变量abindo
,因此您的错误。abindo
仅在try
块中创建。如果执行catch
块,则该命令不可用。要解决此问题,请移动以开头的代码块
if abrindo.code == 200:
NameError: name 'abrindo' is not defined
在
块内尝试。还有一个建议,如果您没有在else
部分中执行任何操作,而不是使用pass
显式编写,只需删除它们。abindo
仅在try
块中创建。如果执行catch
块,则该命令不可用。要解决此问题,请移动以开头的代码块
if abrindo.code == 200:
NameError: name 'abrindo' is not defined
在块内尝试。还有一个建议,如果你在else
部分没有做任何事情,不要用pass
显式编写,只需删除它们。不建议在try
块中移动大量代码,因为它可以掩盖错误(即使它不会使用这个确切的代码,通常也可以,包括随着代码的发展). 相反,它可以放在一个else:
块中,与try
对齐(当且仅当块之外没有时执行),或者(正如另一个答案所建议的)将除了:传递更改为除了:继续。不建议在try
块中移动大量代码,因为它可以屏蔽bug(即使它不能与这个确切的代码兼容,它通常也可以,包括随着代码的发展)。相反,它可以放在一个else:
块中,该块与try
对齐(当且仅当块除外时执行),或者(正如另一个答案所示)将除了:pass
更改为除了:continue
。我做到了,有趣的是,在我测试的网站中,存在一个“Palavra”单词,但没有打印“-”。现在我修复了它,这是我的一个错误。谢谢阿尔科:)!我做到了,有趣的是,在我测试的一个网站中,存在一个“palavras”单词,但没有打印“-”。现在我修复了它,这是我的一个错误。谢谢阿尔科:)!