2010-05-08 5 views
240

Voici mon code:Erreur d'importation: Aucun nom du module urllib2

import urllib2.request 

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

Toute aide?

+4

Je vous vois modifié votre réponse encore une fois, donc je modifié ma réponse encore une fois à répondre: votre problème actuel est que vous dites 'urllib.urlopen (" http : //www.google.com/ ")' au lieu de simplement 'urlopen (" http://www.google.com/ ")' –

Répondre

325

Comme indiqué dans le urllib2 documentation:

The urllib2 module has been split across several modules in Python 3 named urllib.request and urllib.error . The 2to3 tool will automatically adapt imports when converting your sources to Python 3.

Donc, vous devriez plutôt dire

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

Votre échantillon actuel, le code maintenant édité est incorrect parce que vous dites urllib.urlopen("http://www.google.com/") au lieu de simplement urlopen("http://www.google.com/").

+1

Vous obtenez toujours une erreur, s'il vous plaît voir modifier. Edit: Toujours obtenir une erreur lors de l'utilisation de urllib.request –

+4

@Sergio: C'est «urllib.request» et non «urllib2.request». Les modules 'urllib' et' urllib2' de Python 2.x ont été combinés dans le module 'urllib' de Python 3. –

+0

' import urllib2' fonctionne pour moi dans un script Python 2 normal, mais pour obtenir le même script pour exécuter dans Jupyter Notebook, j'avais besoin de votre solution pour résoudre le 'ModuleNotFoundError'. – noobninja

50

Ce qui précède n'a pas fonctionné pour moi dans 3.3. Essayez plutôt (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')) 
69

Pour un script de travail avec Python 2 (versions testées 2.7.3 et 2.6.8) et Python 3 (3.2.3 et 3.3.2+): essayer

#! /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()) 
13

python 3:

import urllib.request 

wp = urllib.request.urlopen("http://google.com") 
pw = wp.read() 
print(pw) 

python 2:

import urllib 
import sys 

wp = urllib.urlopen("http://google.com") 
for line in wp: 
    sys.stdout.write(line) 

Bien que j'ai testé les deux codes dans les versions respectives.

4

Cela a fonctionné pour moi dans python3:

import urllib.request 
htmlfile = urllib.request.urlopen("http://google.com") 
htmltext = htmlfile.read() 
print(htmltext) 
10

Certains complétions onglet pour afficher le contenu des paquets en Python 2 vs Python 3.

En Python 2:

In [1]: import urllib 

In [2]: urllib. 
urllib.ContentTooShortError  urllib.ftpwrapper    urllib.socket     urllib.test1 
urllib.FancyURLopener   urllib.getproxies    urllib.splitattr     urllib.thishost 
urllib.MAXFTPCACHE    urllib.getproxies_environment urllib.splithost     urllib.time 
urllib.URLopener     urllib.i       urllib.splitnport    urllib.toBytes 
urllib.addbase     urllib.localhost     urllib.splitpasswd    urllib.unquote 
urllib.addclosehook    urllib.noheaders     urllib.splitport     urllib.unquote_plus 
urllib.addinfo     urllib.os      urllib.splitquery    urllib.unwrap 
urllib.addinfourl    urllib.pathname2url    urllib.splittag     urllib.url2pathname 
urllib.always_safe    urllib.proxy_bypass    urllib.splittype     urllib.urlcleanup 
urllib.base64     urllib.proxy_bypass_environment urllib.splituser     urllib.urlencode 
urllib.basejoin     urllib.quote      urllib.splitvalue    urllib.urlopen 
urllib.c       urllib.quote_plus    urllib.ssl      urllib.urlretrieve 
urllib.ftpcache     urllib.re      urllib.string      
urllib.ftperrors     urllib.reporthook    urllib.sys 

En Python 3:

In [2]: import urllib. 
urllib.error  urllib.parse  urllib.request  urllib.response  urllib.robotparser 

In [2]: import urllib.error. 
urllib.error.ContentTooShortError urllib.error.HTTPError    urllib.error.URLError 

In [2]: import urllib.parse. 
urllib.parse.parse_qs   urllib.parse.quote_plus  urllib.parse.urldefrag   urllib.parse.urlsplit 
urllib.parse.parse_qsl   urllib.parse.unquote   urllib.parse.urlencode   urllib.parse.urlunparse 
urllib.parse.quote    urllib.parse.unquote_plus  urllib.parse.urljoin   urllib.parse.urlunsplit 
urllib.parse.quote_from_bytes urllib.parse.unquote_to_bytes urllib.parse.urlparse 

In [2]: import urllib.request. 
urllib.request.AbstractBasicAuthHandler   urllib.request.HTTPSHandler 
urllib.request.AbstractDigestAuthHandler  urllib.request.OpenerDirector 
urllib.request.BaseHandler      urllib.request.ProxyBasicAuthHandler 
urllib.request.CacheFTPHandler     urllib.request.ProxyDigestAuthHandler 
urllib.request.DataHandler      urllib.request.ProxyHandler 
urllib.request.FTPHandler      urllib.request.Request 
urllib.request.FancyURLopener     urllib.request.URLopener 
urllib.request.FileHandler      urllib.request.UnknownHandler 
urllib.request.HTTPBasicAuthHandler    urllib.request.build_opener 
urllib.request.HTTPCookieProcessor    urllib.request.getproxies 
urllib.request.HTTPDefaultErrorHandler   urllib.request.install_opener 
urllib.request.HTTPDigestAuthHandler   urllib.request.pathname2url 
urllib.request.HTTPErrorProcessor    urllib.request.url2pathname 
urllib.request.HTTPHandler      urllib.request.urlcleanup 
urllib.request.HTTPPasswordMgr     urllib.request.urlopen 
urllib.request.HTTPPasswordMgrWithDefaultRealm urllib.request.urlretrieve 
urllib.request.HTTPRedirectHandler  


In [2]: import urllib.response. 
urllib.response.addbase  urllib.response.addclosehook urllib.response.addinfo  urllib.response.addinfourl 
1

En python 3, pour obtenir une sortie de texte:

import io 
import urllib.request 

response = urllib.request.urlopen("http://google.com") 
text = io.TextIOWrapper(response) 
Questions connexes