关于json:什么python模块替换urllib2用于python 3和flask?

What python module replaces urllib2 for use with python 3 and flask?

本问题已经有最佳答案,请猛点这里访问。

事实上,这个问题的措辞可能会更好一些,因为它是为实现这一目标而寻求最佳实践的请求。这是令人沮丧的,因为这应该是容易的。

我正在以书中的烧瓶为例进行指导。我使用的是最新版本的python 3。无法为python 3找到文本中使用的urllib2。从文本中,我们需要urllib2来下载数据,urllib来正确编码参数。只有一个功能,获取天气,因为我找不到有效的更新方法。

我将列出相关的代码行,以显示我正在尝试完成的工作。我用的是最新版本的烧瓶和python 3。我不会列出模板文件,因为直到我尝试下载JSONAPI时问题才出现。

所以,对文件的第一个更改,包括导入URLLIB和JSON。这本书是从2015年Urllib2出版的。我们正试图从openwheathermap.org获取天气信息。由于找不到urllib2,我稍微修改了这本书的代码。

我有

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
WEATHER_URL ="http://api.openweathermap.org/data/2.5/weather?q={}&APPID=myappid"

def get_weather(query):
  query = urllib.parse.quote(query)
  url = WEATHER_URL.format(query)
  data = urllib.request.urlopen(url).read()
  parsed = json.loads(str(data))
  weather = None
  if parsed.get('weather'):
    weather = {'description': parsed['weather'][0]['description'],
               'temperature': parsed['main']['temp'],
               'city': parsed['name'],
               'country': parsed['sys']['country']
               }
  return weather

任何建议都将不胜感激。谢谢,布鲁斯


您可以使用具有更干净接口的requests库来执行HTTP操作。

库的URL。http://www.python-requests.org/en/master/

你可以的

1
pip install requests

在shell/cmd上安装。

在代码中,

1
2
3
import requests
response = requests.get(WEATHER_URL.format(query))
weather = response.json() # or something as easy as this.