How to build URLs in Python

How to build URLs in Python

I would go for Pythons urllib, its a built-in library.

Python 2

import urllib
url = https://example.com/somepage/?
params = {var1: some data, var2: 1337}
print(url + urllib.urlencode(params))

Python 3

import urllib.parse
url = https://example.com/somepage/?
params = {var1: some data, var2: 1337}
print(url + urllib.parse.urlencode(params))

Output:

https://example.com/somepage/?var1=some+data&var2=1337

urlparse in the python standard library is all about building valid urls. Check the documentation of urlparse

How to build URLs in Python

Here is an example of using urlparse to generate URLs. This provides the convenience of adding path to the URL without worrying about checking slashes.

import urllib

def build_url(base_url, path, args_dict):
    # Returns a list in the structure of urlparse.ParseResult
    url_parts = list(urllib.parse.urlparse(base_url))
    url_parts[2] = path
    url_parts[4] = urllib.parse.urlencode(args_dict)
    return urllib.parse.urlunparse(url_parts)

>>> args = {arg1: value1, arg2: value2}
>>> # works with double slash scenario
>>> build_url(http://www.example.com/, /somepage/index.html, args)

http://www.example.com/somepage/index.html?arg1=value1&arg2=value2

# works without slash
>>> build_url(http://www.example.com, somepage/index.html, args)

http://www.example.com/somepage/index.html?arg1=value1&arg2=value2

Leave a Reply

Your email address will not be published. Required fields are marked *