web-dev-qa-db-fra.com

Comment utiliser urllib dans Python 3?

Voici mon problème avec urllib en python 3.

J'ai écrit un morceau de code qui fonctionne bien dans Python 2.7 et utilise urllib2. Il va à la page sur Internet (qui nécessite une autorisation) et me saisit les informations de cette page.

Le vrai problème pour moi est que je ne peux pas faire fonctionner mon code en python 3.4 car il n’ya pas d’urllib2, et urllib fonctionne différemment; même après quelques heures de recherches sur Google et de lecture, je n'ai rien eu. Donc, si quelqu'un peut m'aider à résoudre ce problème, j'apprécierais vraiment cette aide.

Voici mon code:

    request = urllib2.Request('http://mysite/admin/index.cgi?index=127')
    base64string = base64.encodestring('%s:%s' % ('login', 'password')).replace('\n', '')
    request.add_header("Authorization", "Basic %s" % base64string)
    result = urllib2.urlopen(request)
    resulttext = result.read()
10
mooose

Heureusement pour vous, j'ai enfin compris comment ça marche ... Voici mon code:

request = urllib.request.Request('http://mysite/admin/index.cgi?index=127')
base64string = base64.b64encode(bytes('%s:%s' % ('login', 'password'),'ascii'))
request.add_header("Authorization", "Basic %s" % base64string.decode('utf-8'))
result = urllib.request.urlopen(request)
resulttext = result.read()

Après tout, il y a une autre différence avec urllib: la variable resulttext dans mon cas avait le type <bytes> au lieu de <str>, donc pour faire quelque chose avec du texte à l'intérieur, je devais le décoder: 

text = resulttext.decode(encoding='utf-8',errors='ignore')
8
mooose

Qu'en est-il urllib.request ? Il semble qu'il a tout ce dont vous avez besoin.

import base64
import urllib.request

request = urllib.request.Request('http://mysite/admin/index.cgi?index=127')
base64string =  bytes('%s:%s' % ('login', 'password'), 'ascii')
request.add_header("Authorization", "Basic %s" % base64string)
result = urllib.request.urlopen(request)
resulttext = result.read()
5
Sébastien Deprez

En utilisant urllib en python 3, voici mon code:

from urllib.request import urlopen

url = 'https://someurl/'
page = urlopen(url)
html = page.read()
0
Banjali