2010-05-08 13 views
240

Hier ist mein Code:Import-Fehler: Kein Modulname urllib2

import urllib2.request 

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

Jede Hilfe?

+4

Ich sehe Sie Ihre Antwort noch einmal bearbeitet, so bearbeitete ich meine Antwort wieder zu antworten: Ihr aktuelles Problem ist, dass Sie sagen, 'urllib.urlopen (" http : //www.google.com/ ")' anstatt nur 'urlopen (" http://www.google.com/ ")' –

Antwort

325

Wie in den urllib2 documentation erklärt:

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.

So sollten Sie stattdessen

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

Ihr aktuelles, jetzt bearbeiten Codebeispiel ist falsch, da Sie urllib.urlopen("http://www.google.com/") statt nur urlopen("http://www.google.com/") sagen werden.

+1

Es wird immer noch ein Fehler angezeigt, siehe Bearbeiten. Edit: Immer noch einen Fehler bei der Verwendung von urllib.request –

+4

@ Sergio: Es ist 'urllib.request' und nicht' urllib2.request'. Die Module 'urllib' und 'urllib2' aus Python 2.x wurden in Python 3 zu dem Modul 'urllib' kombiniert. –

+0

'import urllib2' funktioniert für mich in einem regulären Python 2-Skript, aber um das gleiche Skript zu erhalten Um in Jupyter Notebook auszuführen, brauchte ich Ihre Lösung, um 'ModuleNotFoundError' zu lösen. – noobninja

50

Das oben genannte funktionierte nicht für mich in 3.3. Versuchen Sie, diese statt (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

Für ein Skript arbeitet mit Python 2 (getesteten Versionen 2.7.3 und 2.6.8) und Python 3 (3.2.3 und 3.3.2+) versuchen:

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

Während ich beide Codes in jeweiligen Versionen getestet habe.

4

, die für mich in python3 gearbeitet:

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

Einige Reiter Fertig 2 den Inhalt der Pakete in Python zeigen vs Python 3.

In 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 

In 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

In Python 3, Textausgabe erhalten:

import io 
import urllib.request 

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