我得到了ApplicationError:2个非数字端口:''随机约为我网址请求的十分之一,其余工作正常,我看到这是一个错误,但我还没有找到任何解决方案,任何人都有任何想法为什么会这样?我正在运行python 2.5.4和谷歌应用引擎1.3.3
这是一些通用代码,在随机请求页面时发生错误
def overview(page):
try:
page = "http://www.url.com%s.json?" %page
u = urllib.urlopen(page.encode('utf-8'))
bytes = StringIO(u.read())
u.close()
except Exception, e:
print e
return None
try:
JSON_data = json.load(bytes)
return JSON_data
except ValueError:
print "Couldn't get .json for %s" % page
return None
答案 0 :(得分:1)
您的代码可能会出现问题。一个是你没有对页面的传入值做任何事情,但它被你的try块中的赋值所覆盖了。另外,正如我在评论中指出的那样,赋值中的%s希望有一个变量替换它的位置。这可能与页面参数中的值有关。试试这个:
def overview(page_to_get):
try:
page = "http://www.url.com%s.json?" % page_to_get
u = urllib.urlopen(page.encode('utf-8'))
bytes = StringIO(u.read())
u.close()
except Exception, e:
print e
return None
try:
JSON_data = json.load(bytes)
return JSON_data
except ValueError:
print "Couldn't get .json for %s" % page
return None
编辑:
@ user291071:我猜想通过概述参数页面传入的某些值不会以前导斜杠开头。确保URL解析器不会尝试将附加信息解释为端口号的唯一方法是确保它以/或?开头。也许这对你更有效:
page = "http://www.url.com/%s.json?" % page_to_get
但它可能会导致当前正在运行的其他网址失败。最好的办法是记录正在创建的URL,并直观地检查那些失败的URL。