web-dev-qa-db-fra.com

Comment encoder une URL en Python 3?

J'ai essayé de suivre la documentation mais je n'ai pas pu utiliser urlparse.parse.quote_plus() dans Python 3:

from urllib.parse import urlparse

params = urlparse.parse.quote_plus({'username': 'administrator', 'password': 'xyz'})

Je reçois

AttributeError: l'objet 'fonction' n'a pas d'attribut 'parse'

22
amphibient

Vous avez mal lu la documentation. Vous devez faire deux choses:

  1. Citez chaque clé et valeur de votre dictionnaire, et
  2. Encode ceux-ci dans une URL

Heureusement, urllib.parse.urlencode fait ces deux choses en une seule étape et c'est la fonction que vous devriez utiliser.

from urllib.parse import urlencode, quote_plus

payload = {'username':'administrator', 'password':'xyz'}
result = urlencode(payload, quote_via=quote_plus)
# 'password=xyz&username=administrator'
35
Adam Smith

Vous recherchez urllib.parse.urlencode

import urllib.parse

params = {'username': 'administrator', 'password': 'xyz'}
encoded = urllib.parse.urlencode(params)
# Returns: 'username=administrator&password=xyz'
0
rumpel