我正在运行一个从API网址中获取json数据的代码,方案是我正在尝试自定义异常,而未获取URL响应(有时响应显示200仍然不会提取数据)代码应该从头开始重新执行。
代码:
import json
import urllib
url = 'www.google.com'
status = url.getcode()
if(status != 200):
# re-execute the code
data = json.load(urllib.urlopen(url))
if (data == null):
#re-execute the code
在通过互联网搜索时找不到合适的解决方案
任何人都可以帮忙吗?
答案 0 :(得分:2)
我认为这可以帮助你,遵循你迄今为止的逻辑:
import json
import urllib
url = 'www.google.com'
while True:
status = url.getcode()
if status != 200:
continue
data = json.load(urllib.urlopen(url))
if not data:
continue
break
您还可以通过以下方式进行改进:
import json
import urllib
url = 'www.google.com'
status = url.getcode()
data = json.load(urllib.urlopen(url))
while status != 200 or not data:
status = url.getcode()
data = json.load(urllib.urlopen(url))
答案 1 :(得分:0)
import json
import urllib
URL = 'www.google.com'
def get_data_status(url):
return (json.load(urllib.urlopen(url)), url.getcode())
while 1:
data, status = get_data_status(URL)
if data and (status==200):
break
无,False,空字符串,空字典,空数组和0都是错误值。我不认为你正确使用null。当Python解码JSON时,它会将null变为空的对象,即无。
ETA:关于评论:
如果api没有任何数据,则将响应返回为null,因此给出null
在' if(data == null)'
之后我还有更多的行可以执行
好的,如果您真的从json请求中获得了str(null),并且您想要执行更多代码行"在那件事上:
while 1:
data, status = get_data_status(URL)
if (data!='null') and (status==200):
break
elif (data='null'):
print 'execute a few more lines of "null" data code'
elif (status!=200):
print 'execute a few more lines of wrong status code'
print 'exiting while loop with good data and status 200'