URL Python

Le module urllib a changé la façon dont la fonction request est accessible dans Python 3. Cela signifie que si vous essayez de référencer le "urlopen‚" fonction de la manière que vous faites dans Python 2, vous rencontrerez le "AttributeError: ‚Äòmodule‚Äô l’objet n’a pas d’attribut ‚Äòurlopen‚Äô‚" error.

Ce guide explique ce que signifie cette erreur et pourquoi elle est générée. Il présente un exemple de cette erreur afin que vous puissiez apprendre à la résoudre.

AttributeError : ‚Äòmodule‚Äô l’objet n’a pas d’attribut ‚Äòurlopen‚Äô

Le "urllib‚" module fournit un certain nombre de fonctions liées à l’ouverture d’URL et à la lecture de données à partir de sites Web. La syntaxe d’utilisation de cette bibliothèque est différente entre Python 2 et Python 3.

En Python 2 , "urlopen" fait partie de la "urllib‚" module. Cela signifie que vous pouvez l’importer dans votre code en utilisant urllib.urlopen. En Python 3, "urlopen" fait partie d’une "demande" module dans le "urllib‚" méthode :

  • Python 2 : urllib -> urlopen
  • Python 3 : urllib -> demande -> urlopen

La "demande‚" module est l’endroit o√π la plupart des fonctions de requête Web dans le "urllib‚" paquet sont groupés. Les AttributeErrors sont levées lorsque vous essayez d’accéder à un attribut à partir d’un module qui ne contient pas cet attribut. Dans ce cas, "urlopen" ne fait pas partie de la "urllib‚" module.

Un exemple de scénario

Créez un programme qui récupère les données d’un service appelé JSONPlaceholder. Ce service fournit des données factices que vous pouvez utiliser pour votre exemple.

Récupérez un seul message avec l’ID 2. Pour commencer, importez le module urllib :

Cette instruction vous permet d’utiliser des fonctions à partir de la "urllib‚" module dans le programme.

81% des participants ont déclaré qu’ils se sentaient plus confiants quant à leurs perspectives d’emploi en technologie après avoir assisté à un bootcamp. Faites-vous jumeler à un bootcamp aujourd’hui.

Le diplômé moyen d’un bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.

Ensuite, faites une demande en utilisant "urlopen". Cela vous permettra de récupérer les données d’un point de terminaison sur l’API JSONPlaceholder :

Ce code lit les données de la publication avec l’ID #2 sur l’API JSONPlaceholder.

Le code imprime la réponse de notre requête, formatée sous forme de chaaîne JSON, sur la console à l’aide d’une instruction print. Exécutez le code et voyez ce qui se passe :

Le programme renvoie une erreur .

La solution

Vous utilisez la syntaxe Python 2 pour accéder au "urlopen" méthode. "urlopen" n’est pas un attribut de "urllib‚" en Python 3. Vous faites référence à "urlopen‚" en tant qu’attribut de "urllib‚" le programme ne s’exécute donc pas correctement.

Pour résoudre ce problème, importez la "request‚" module de "urllib‚" module. Ce module contient le "urlopen‚" méthode :

Ensuite, modifiez le code afin de référencer le module urllib.request lorsque vous récupérez les données de l’API JSONPlaceholder :

Ce code lira le contenu du point de terminaison de l’API que nous appelons. Exécutons notre code :

Vous avez décodé la réponse que vous recevez en utilisant la méthode decode(). Faites cela pour pouvoir lire les valeurs renvoyées par la méthode urlopen() sous forme de chaaîne.

Conclusion

Le "urlopen‚" n’est pas un objet de "urllib‚" en Python 3. Pour accéder à cette fonction, importez "urllib.request‚" dans votre code et référencez la fonction urllib.request.urlopen().

Maintenant, vous avez les connaissances nécessaires pour corriger cette erreur Python comme un professionnel !