Importfout: geen modulenaam urllib2

Hier is mijn code:

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

Heeft u hulp?


Antwoord 1, autoriteit 100%

Zoals vermeld in de urllib2-documentatie:

De urllib2module is verdeeld over verschillende modules in Python 3 genaamd urllib.requesten urllib.error. De tool 2to3past automatisch de import aan bij het converteren van je bronnen naar Python 3.

Dus je zou in plaats daarvan moeten zeggen

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

Uw huidige, nu bewerkte codevoorbeeld is onjuist omdat u urllib.urlopen("http://www.google.com/")zegt in plaats van alleen urlopen("http://www.google.com/").


Antwoord 2, autoriteit 16%

Voor een script dat werkt met Python 2 (geteste versies 2.7.3 en 2.6.8) en Python 3 (3.2.3 en 3.3.2+), probeer:

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

Antwoord 3, autoriteit 10%

Het bovenstaande werkte niet voor mij in 3.3. Probeer dit in plaats daarvan (YMMV, enz.)

import urllib.request
url = "http://www.google.com/"
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
print (response.read().decode('utf-8'))

Antwoord 4, autoriteit 4%

Enkele aanvullingen op het tabblad om de inhoud van de pakketten in Python 2 vs Python 3 te tonen.

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

Antwoord 5, autoriteit 3%

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)

Terwijl ik beide codes in de respectievelijke versies heb getest.


Antwoord 6, autoriteit 2%

De eenvoudigste van alle oplossingen:

In Python 3.x:

import urllib.request
url = "https://api.github.com/users?since=100"
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
data_content = response.read()
print(data_content)

Antwoord 7

In python 3, om tekstuitvoer te krijgen:

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

Antwoord 8

OPMERKING: urllib2is niet langer beschikbaar in Python 3

Je kunt de volgende code proberen.

import urllib.request 
res = urllib.request.urlopen('url')
output = res.read()
print(output)

Je kunt meer informatie krijgen over urllib.requestin deze link.

Gebruik :urllib3

import urllib3
http = urllib3.PoolManager()
r = http.request('GET', 'url')
print(r.status)
print( r.headers)
print(r.data)

Ook als je meer details wilt over urllib3. volg deze link.


Antwoord 9

Dat werkte voor mij in python3:

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

LEAVE A REPLY

Please enter your comment!
Please enter your name here

3 − 1 =

Other episodes