4 votes

Quel module python remplace urllib2 pour une utilisation avec python 3 et flask ?

En fait, il serait préférable de formuler la question comme une demande de meilleure pratique pour y parvenir. C'est frustrant car cela devrait être facile.

Je suis un tutoriel dans le livre Flask by Example. J'utilise la dernière version de python 3. L'urllib2 utilisé dans le texte ne peut être trouvé pour python 3. D'après le texte, nous avons besoin d'urllib2 pour télécharger les données, et d'urllib pour encoder correctement les paramètres. Juste une fonction, get_weather car je ne trouve pas d'approche actualisée qui fonctionne.

Je vais énumérer les lignes de code pertinentes pour montrer ce que j'essaie d'accomplir. J'utilise la dernière version de flask avec python 3. Je ne vais pas énumérer le fichier modèle, car le problème n'est apparu que lorsque j'ai essayé de télécharger une api json.

Donc, les premières modifications du fichier, incluent les importations pour urllib et json. Le livre date de 2015, lorsque urllib2 était disponible. Nous essayons d'obtenir la météo à partir de openwheathermap.org. Comme je n'ai pas pu trouver urllib2, j'ai modifié légèrement le code du livre.

J'ai

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

Tout conseil serait apprécié.
Merci, Bruce

5voto

Vasif Points 1143

Vous pouvez utiliser requests qui possède une interface populairement plus propre pour effectuer des opérations http.

URL de la bibliothèque. http://www.python-requests.org/en/master/

Vous pouvez faire

pip install requests

sur votre shell/cmd pour l'installer.

En code,

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X