Python urllib

Funciones y métodos de Python

El módulo urllib cambió la forma en que se accede a la función request en Python 3. Esto significa que si intenta hacer referencia a & ldquo; urlopen & rdquo; funciona de la forma en que lo hace en Python 2, encontrará el & ldquo; AttributeError: & lsquo; module & rsquo; el objeto no tiene atributo & lsquo; urlopen & rsquo; & rdquo; error.

Esta guía habla sobre lo que significa este error y por qué se genera. Muestra un ejemplo de este error para que pueda aprender a resolverlo.




AttributeError: & lsquo; module & rsquo; el objeto no tiene atributo & lsquo; urlopen & rsquo;

El & ldquo; urllib & rdquo; El módulo proporciona una serie de funciones relacionadas con la apertura de URL y la lectura de datos de sitios web. La sintaxis para usar esta biblioteca es diferente entre Python 2 y Python 3 .

En Python 2 , & ldquo; urlopen & rdquo; es parte de & ldquo; urllib & rdquo; módulo. Esto significa que puede importarlo a su código usando urllib.urlopen. En Python 3, & ldquo; urlopen & rdquo; es parte de una & ldquo; solicitud & rdquo; módulo dentro de & ldquo; urllib & rdquo; método:

  • Python 2: urllib - & gt; urlopen
  • Python 3: urllib - & gt; solicitud - & gt; urlopen

La & ldquo; solicitud & rdquo; módulo es donde muchas de las funciones de solicitud web en el & ldquo; urllib & rdquo; el paquete está incluido. AttributeErrors se generan cuando intenta acceder a un atributo desde un módulo que no contiene ese atributo. En este caso, & ldquo; urlopen & rdquo; no es parte de & ldquo; urllib & rdquo; módulo.




Un escenario de ejemplo

Cree un programa que recupere datos de un servicio llamado JSONPlaceholder. Este servicio proporciona datos ficticios que puede utilizar para su ejemplo. & Nbsp;

Recupere una sola publicación con el ID # 2. Para comenzar, importe el módulo urllib :

 importar urllib 

Esta declaración le permite utilizar funciones desde & ldquo; urllib & rdquo; módulo en el programa.

El 81% de los participantes dijeron que se sentían más seguros sobre sus perspectivas laborales después de asistir a un bootcamp. Asóciese a un bootcamp hoy mismo.

El graduado promedio de bootcamp pasó menos de seis meses en la transición profesional, desde comenzar un bootcamp hasta encontrar su primer trabajo.

A continuación, haga una solicitud usando & ldquo; urlopen & rdquo ;. Esto le permitirá recuperar los datos de un punto final en la API JSONPlaceholder:

 data = urllib. urlopen ("https://jsonplaceholder.typicode.com/posts/2") contents = data.read () print (as_json) 

Este código lee los datos de la publicación con el ID # 2 en la API JSONPlaceholder. & Nbsp;

El código imprime la respuesta de nuestra solicitud, formateada como una cadena JSON, en la consola mediante una declaración de impresión. Ejecute el código y vea qué sucede:

 Traceback (última llamada más reciente): Archivo "main .py ", línea 4, en & lt; módulo & gt; data = urllib.urlopen ("https://jsonplaceholder.typicode.com/posts/2") AttributeError: el módulo 'urllib' no tiene atributo' urlopen' 

El programa devuelve un error .




La solución

Está utilizando la sintaxis de Python 2 para acceder a la & ldquo; urlopen & rdquo; método. & ldquo; urlopen & rdquo; no es un atributo de & ldquo; urllib & rdquo; en Python 3. Usted hace referencia a & ldquo; urlopen & rdquo; como atributo de & ldquo; urllib & rdquo; por lo que el programa no se ejecuta correctamente.

Para resolver este problema, importe la & ldquo; solicitud & rdquo; módulo de & ldquo; urllib & rdquo; módulo. Este módulo contiene el & ldquo; urlopen & rdquo; método:

 import urllib.request 

A continuación, cambie el código para que haga referencia al módulo urllib.request cuando recupere datos de la API JSONPlaceholder:

Este código leerá el contenido del punto final de la API que llamamos. Ejecutemos nuestro código:

 {"userId": 1, "id": 2 , "título": "qui est esse", "cuerpo": "est rerum tempore vitae sequi sint nihil reprehenderit dolor beatae ea dolores neque fugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis qui aperiam non debitis possimus qui neque nisi nulla"} 

Ha decodificado la respuesta que recibe usando el método decode () . Haga esto para que pueda leer los valores devueltos por el método urlopen () como una cadena.




Conclusión

El & ldquo; urlopen & rdquo; la función no es un objeto de & ldquo; urllib & rdquo; en Python 3. Para acceder a esta función, importe & ldquo; urllib.request & rdquo; en su código y haga referencia a la función urllib.request.urlopen () .


¡Ahora tiene el conocimiento que necesita para corregir este error de Python como un profesional !





Python urllib: StackOverflow Questions

Tutorials