哪一个python模块取代了urllib2以用于python 3和flask?

哪一个python模块取代了urllib2以用于python 3和flask?,python,json,urllib,Python,Json,Urllib,事实上,这个问题的措辞可能会更好,因为它要求提供实现这一目标的最佳实践。这是令人沮丧的,因为这应该很容易 我正在按照书中的一个教程“烧瓶举例”。我使用的是python 3的最新版本。在python 3中找不到文本中使用的urllib2。从文本中,我们需要urllib2下载数据,并需要urllib正确编码参数。只有一个功能,get_weather,因为我找不到有效的更新方法 我将列出相关的代码行,以显示我正在努力完成的任务。我正在使用最新版本的flask和python 3。我不会列出模板文件,因为

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

我正在按照书中的一个教程“烧瓶举例”。我使用的是python 3的最新版本。在python 3中找不到文本中使用的urllib2。从文本中,我们需要urllib2下载数据,并需要urllib正确编码参数。只有一个功能,get_weather,因为我找不到有效的更新方法

我将列出相关的代码行,以显示我正在努力完成的任务。我正在使用最新版本的flask和python 3。我不会列出模板文件,因为在我尝试下载json api之前,问题并没有出现

因此,对文件的第一个更改包括urllib和json的导入。这本书是从2015年开始的,当时urllib2可用。我们正试图从openwheathermap.org获取天气信息。由于找不到urllib2,我稍微修改了这本书的代码

我有

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
任何建议都将不胜感激。
谢谢
Bruce

您可以使用
请求
库来执行http操作,该库具有更干净的界面

库的URL。

你能行

pip install requests
在shell/cmd上安装

在代码中

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

我认为请求库非常流行。正如urllib2文档中所述:urllib2模块在Python 3中被拆分为几个模块,分别命名为urllib.request和urllib.error。在将源代码转换为Python3时,2to3工具将自动调整导入。您所说的这个问题是什么?当然,您可以使用标准库
urllib
包来实现这一点。您只需以正确的方式导入模块。复制在哪里?我对urllib.urlopen(url)有问题。get(url)工作正常。如果我想从表单获取数据并将其传递给get请求:(1)我应该使用request.args.get(查询)还是request.form.get(查询)urllib.parse.quote()做什么?在发出get请求之前,从表单获取数据时是否需要转义任何字符?