Error de importación: no hay nombre de módulo urllib2

Resuelto asked hace 14 años • 10 respuestas

Aquí está mi código:

import urllib2.request

response = urllib2.urlopen("http://www.google.com")
html = response.read()
print(html)

¿Alguna ayuda?

 avatar May 08 '10 08:05
Aceptado

Como se indica en la urllib2documentación :

El urllib2módulo se ha dividido en varios módulos en Python 3 denominados urllib.requesty urllib.error. La 2to3herramienta adaptará automáticamente las importaciones al convertir sus fuentes a Python 3.

Entonces deberías decir

from urllib.request import urlopen
html = urlopen("http://www.google.com/").read()
print(html)

Su ejemplo de código actual, ahora editado, es incorrecto porque está diciendo urllib.urlopen("http://www.google.com/")en lugar de simplemente urlopen("http://www.google.com/").

Eli Courtwright avatar May 08 '2010 02:05 Eli Courtwright

Para un script que funcione con Python 2 (versiones probadas 2.7.3 y 2.6.8) y Python 3 (3.2.3 y 3.3.2+), intente:

#! /usr/bin/env python

try:
    # For Python 3.0 and later
    from urllib.request import urlopen
except ImportError:
    # Fall back to Python 2's urllib2
    from urllib2 import urlopen

html = urlopen("http://www.google.com/")
print(html.read())
Uwe Kleine-König avatar Jul 07 '2013 09:07 Uwe Kleine-König

Lo anterior no funcionó para mí en 3.3. Pruebe esto en su lugar (YMMV, etc.)

import urllib.request
url = "http://www.google.com/"
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
print (response.read().decode('utf-8'))
keithl8041 avatar Jan 24 '2013 20:01 keithl8041