以前工作但没有得到urllib.error.HTTPError:HTTP错误400:错误请求

时间:2017-01-03 01:13:01

标签: python python-3.x

我没有更改我的代码,但现在当我尝试运行它时,我正在

urllib.error.HTTPError: HTTP Error 400: Bad Request

在这一行

response = urlopen(url).read().decode('utf8')

网址是

url = 'http://api.wunderground.com/api/f8cb961c53baad52/geolookup/conditions/q/{}/{}.json'.format(state.strip(), city)

我应该等到以后再试一次,因为它一直工作到一个小时之前。

编辑:

我正在使用Python 3.5并已更改为

url = quote("http://api.wunderground.com/api/f8cb961c53baad52/geolookup/conditions/q/{}/{}.json").format(state.strip(), city)

这会产生网址

http%3A//api.wunderground.com/api/f8cb961c53baad52/geolookup/conditions/q/%7B%7D/%7B%7D.json

错误消息

ValueError: unknown url type: 'http%3A//api.wunderground.com/api/f8cb961c53baad52/geolookup/conditions/q/%7B%7D/%7B%7D.json'

编辑2:

我用过

url = 'api.wunderground.com/api/f8cb961c53baad52/geolookup/conditions/q/{}/{}.json'.format(state.strip(), city)
print (url)
url1 = quote(url)
url2 = 'http://'+ url1

要对空格进行编码,但我仍然遇到400错误。我会等到明天再试一次,因为我的访问可能存在问题。

编辑: 它正在与没有空间的城市合作。因此,我将继续尝试使用自己的空间。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

只需在您的网络浏览器中粘贴示例网址查询,并根据您可能发现的过度使用API​​的响应或由于使用条款而阻止您的响应。我测试了它,它适用于我。

编辑:PYTHON 3.5正在运作!

import requests
import json
url = "http://api.wunderground.com/api/f8cb961c53baad52/geolookup/conditions/q/{}/{}.json".format('AZ', 'Chandler')
response = requests.get(url=url)
response.json()

输出:

{'current_observation':{'UV':'0',
  'dewpoint_c':5,
  'dewpoint_f':41,
  'dewpoint_string':'41 F(5 C)',
  'display_location':{'city':'Chandler',
   'country':'US',
   'country_iso3166':'US',
   ....