我正在尝试编写此代码,我从openweathermap.org请求此信息thourgh api并尝试在当前时间打印温度和位置。
大多数代码都是我在互联网上找到的一些技巧。
现在我收到了这个错误并且卡住了。任何人都可以帮助我走上正确的道路吗?
继承我的代码:
import urllib.request, urllib.parse, urllib.error
import json
while True:
zipcode = input('Enter zipcode: ')
if len(zipcode) < 1: break
url = 'http://api.openweathermap.org/data/2.5/weather?
zip='+zipcode+',nl&appid=db071ece9a338a36e9d7a660ec4f0e37?'
print('Retrieving', url)
uh = urllib.request.urlopen(url)
data = uh.read().decode()
print('Retrieved', len(data), 'characters')
try:
js = json.loads(data)
except:
js = None
temp = js["main"]["temp"]
loc = js["name"]
print("temperatuur:", temp)
print("locatie:", loc)
所以网址是:http://api.openweathermap.org/data/2.5/weather?zip=3032,nl&appid=db071ece9a338a36e9d7a660ec4f0e37
我得到的错误是:
输入邮政编码:3343 正在检索http://api.openweathermap.org/data/2.5/weather?zip=3343,nl&appid=db071ece9a338a36e9d7a660ec4f0e37? Traceback(最近一次调用最后一次): 文件“weatherapi2.py”,第12行,in 呃= urllib.request.urlopen(url) 文件“C:\ Users \ ErfanNariman \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ urllib \ request.py”,第223行,在urlopen中 return opener.open(url,data,timeout) 文件“C:\ Users \ ErfanNariman \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ urllib \ request.py”,第532行,打开 response = meth(req,response) 在http_response中的文件“C:\ Users \ ErfanNariman \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ urllib \ request.py”,第642行 'http',请求,响应,代码,消息,hdrs) 文件“C:\ Users \ ErfanNariman \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ urllib \ request.py”,第570行,出错 return self._call_chain(* args) 文件“C:\ Users \ ErfanNariman \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ urllib \ request.py”,第504行,在_call_chain中 result = func(* args) 在http_error_default中输入文件“C:\ Users \ ErfanNariman \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ urllib \ request.py”,第650行 引发HTTPError(req.full_url,code,msg,hdrs,fp) urllib.error.HTTPError:HTTP错误401:未经授权
答案 0 :(得分:1)
经过一些故障排除后,我发现了您的问题。你有一个额外的'?'在你的python的url的末尾。
删除它,您的请求正常。尝试使用此代码并且工作 -
import urllib.request, urllib.parse, urllib.error
import json
while True:
zipcode = input('Enter zipcode: ')
if len(zipcode) < 1: break
url = 'http://api.openweathermap.org/data/2.5/weather?zip='+zipcode+',nl&appid=db071ece9a338a36e9d7a660ec4f0e37'
print('Retrieving', url)
uh = urllib.request.urlopen(url)
data = uh.read().decode()
print('Retrieved', len(data), 'characters')
try:
js = json.loads(data)
except:
js = None
temp = js["main"]["temp"]
loc = js["name"]
print("temperatuur:", temp)
print("locatie:", loc)