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?
Aceptado
Como se indica en la urllib2
documentación :
El
urllib2
módulo se ha dividido en varios módulos en Python 3 denominadosurllib.request
yurllib.error
. La2to3
herramienta 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/")
.
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())
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'))