cannot urllib.urlencode a URL in python
Python 3
In Python 3, the quote and urlencode functionalities are located in the module urllib.parse
.
Some Examples:
(un)quote
urllib.parse.quote
Replace special characters in string using the %xx escape.
>>> import urllib.parse
>>> urllib.parse.quote('https://www.google.com/')
'https%3A//www.google.com/'
Similarly, to reverse this operation, use urllib.parse.unquote:
urllib.parse.unquote
Replace %xx escapes by their single-character equivalent.
>>> import urllib.parse
>>> urllib.parse.unquote('https%3A//www.google.com/')
'https://www.google.com/'
(un)quote_plus
urllib.parse.quote_plus
Like quote(), but also replace spaces by plus signs, as required for quoting HTML form values when building up a query string to go into a URL.
>>> import urllib.parse
>>> urllib.parse.quote_plus('https://www.google.com/')
'https%3A%2F%2Fwww.google.com%2F'
Similarly, to reverse this operation, use urllib.parse.unquote_plus:
urllib.parse.unquote_plus
Like unquote(), but also replace plus signs by spaces, as required for unquoting HTML form values.
>>> import urllib.parse
>>> urllib.parse.unquote_plus('https%3A%2F%2Fwww.google.com%2F')
'https://www.google.com/'
urlencode
urllib.parse.urlencode
>>> import urllib.parse
>>> d = {'url': 'https://google.com', 'event': 'someEvent'}
>>> urrlib.parse.urlencode(d)
'url=https%3A%2F%2Fgoogle.com&event=someEvent'
That's not what that function does:
urlencode(query, doseq=0)
Encode a sequence of two-element tuples or dictionary into a URL query string.
Are you looking for?
urllib.quote(callback)
Python 2urllib.parse.quote(callback)
Python 3
Python is not PHP. You want urllib.quote()
instead.
urlencode()
This function encode two-element tuples or dictionary only.
>>> import urllib
>>> dict = { 'First_Name' : 'Jack', 'Second_Name' : "West"}
>>> urllib.urlencode(dict)
'First_Name=Jack&Second_Name=West
quote_plus()
This function encode url string
>>> import urllib
>>> url ="https://www.google.com/"
>>> urllib.quote_plus(url)
'https%3A%2F%2Fwww.google.com%2F'