Python Urllib Module Tutorial – Complete Guide

Python is one of the most versatile programming languages, and it gets its power from a host of in-built and third-party modules. Today, we explore an integral part of Python’s networking capabilities – the ‘urllib’ module. This exciting tutorial is set to introduce you to the essential concepts and practical applications of ‘urllib’. So let’s dive in and uncover the mysteries of the web with Python.

What is Python’s urllib module?

Python’s ‘urllib’ module is a powerful tool in the Python Standard Library used for opening and reading URLs. The term ‘urllib’ stands for URL library. From web scraping to data mining, making HTTP requests to handling cookies, ‘urllib’ makes interaction with the internet effortless and accessible.

Why should you learn Python’s urllib module?

As we delve deeper into the age of information, data is everything. Websites are vast stores of useful data, and the ability to interact with and manipulate this data is a vital skill for any coder. ‘urllib’ opens the door to the world of web data right from your Python script.

Whether you are a game developer wanting to incorporate web features in your game, or an AI enthusiast harvesting data for your next big project, ‘urllib’ has a wealth of functionalities ready for you to exploit.

What can you do with the urllib module?

With ‘urllib’, you can perform various networking operations such as:

  1. Fetching URLs
  2. Send HTTP requests (GET and POST)
  3. Handle cookies and sessions
  4. Web scraping

So, are you excited to learn how to wield the power of ‘urllib’ module in Python? Trust us, it’s going to be a thrilling ride.

CTA Small Image

How to Use the urllib Module?

First things first – to use the ‘urllib’ module, you must import it into your Python script. But how? It’s pretty straightforward, and you’ll see with our first example.

# Importing the module
import urllib

Got it? Now, before we start accessing URLs, we need to understand that ‘urllib’ is not just a stand-alone module; it’s actually a package that contains sub-modules to handle different aspects of URL manipulations. The module we’ll be using to open and read URLs is urllib.request.

Fetching URLs with urllib.request

With urllib.request module now at our disposal, it’s time for us to fetch our first URL. Let’s see an example:

# Importing urllib.request
import urllib.request

# URL to fetch
url = ""

# Open the URL
response = urllib.request.urlopen(url)

Reading Contents

Right now, the ‘response’ object holds the data fetched from the URL. To read this data, we can simply use the .read() function. The data returned will be in bytes, so we’ll use .decode() to convert it into a string:

# Reading response data
html =

Sending HTTP Requests – GET and POST

The ‘urllib.request’ module allows us to send both GET and POST requests. These requests are crucial for interacting with web services and APIs.

A GET request retrieves data from an API or web service. For instance:

# A GET request
response = urllib.request.urlopen('')
data =

A POST request, on the other hand, sends data to an API or web service, often to create or update resources. For example:

# A POST request
import urllib.parse

data = urllib.parse.urlencode({'id': '1002', 'name': 'New data'}).encode()
response = urllib.request.urlopen('', data=data)

There’s surely a lot more to the urllib module, but this basic introduction should spur you towards a good start. Would you like to move further? Let’s dive deeper in the third part of our tutorial.

Digging Deeper into Python’s urllib Module

As we continue our journey with the ‘urllib’ module, it’s time to explore a broader range of its capabilities. Next, we’ll look at how to use ‘urllib’ to handle cookies and sessions, and manage error handling.

Working with Cookies and Sessions

Managing cookies is an essential part of working with websites. ‘urllib’ makes it quite easy to handle sessions and cookies. For this purpose, we can use the ‘http.cookiejar’ module. Let’s see how:

import http.cookiejar
import urllib.request

# Create a cookie jar
jar = http.cookiejar.CookieJar()

# Create an URL opener with our cookie jar
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(jar))

# Use the opener to fetch a URL
response ='')

for cookie in jar:

Error Handling

When dealing with web services or APIs, errors are common. It’s crucial to handle these errors gracefully. The ‘urllib’ package includes several exception types that we can use to handle various errors associated with URIs and HTTP(s). Let’s check out an example:

from urllib.error import URLError
    response = urllib.request.urlopen('')
except URLError as e:
    if hasattr(e, 'reason'):
        print('We failed to reach a server.')
        print('Reason: ', e.reason)
    elif hasattr(e, 'code'):
        print('The server couldn\'t fulfill the request.')
        print('Error code: ', e.code)

Add headers to your request

When working with web APIs, you would often need to include additional headers in your request. With ‘urllib’, this is smooth sailing:

# Import additional modules
from urllib.request import Request, urlopen

# Define the url
url = ''

# Create a request object
req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})

# Pass the request object to urlopen
response = urlopen(req).read()

URL Parsing

‘urllib’ also provides utilities for URL parsing. This comes in handy while dealing with complex URLs. Here’s a simple introduction:

from urllib.parse import urlparse

url = ''

urlComponents = urlparse(url)

print(urlComponents.scheme)   # http
print(urlComponents.netloc)   #
print(urlComponents.path)     # /api/v1/data
print(urlComponents.query)    # id=1001

With these examples, we hope you can see the potential of the ‘urllib’ module. It empowers Python to effectively communicate with the web, opening up endless possibilities. Now, it’s your turn to explore these possibilities further.

Where to Go Next?

Now that you’ve had a taste of the supreme networking capabilities of ‘urllib’, we’re certain you’ll be eager to discover more. Well, the world of Python has no shortage of mesmerizing wonders to delight a learner’s hunger. So where should you go next to continue your Python journey?

We invite you to take your Python knowledge to the next level with our Python Mini-Degree. This comprehensive collection offers you more than just a traditional course structure; it provides you with a complete, in-depth learning experience. With diverse projects – from creating your own games and algorithms to building real-world applications, this program offers a unique hands-on approach to learning Python.

Python’s hallmark simplicity and versatility are entirely utilized here – beginners are made to feel welcome, while seasoned coders are presented with intriguing challenges. The courses, packed with interactive lessons, quizzes, and coding challenges, seamlessly blend educational and experiential learning. And the best part – our flexible courses can be accessed anytime, making learning Python a smooth sail even for the busiest of minds.

Check out our wide range of Python courses that cater to all learning levels – from beginner to professional. At Zenva, we understand that one size does not fit all, and we have carefully curated our courses to provide content that meets learners at their level. Whether you are a newbie just starting out or a veteran looking for advanced topics, we’ve got you covered!

About Zenva

As a leading online academy, Zenva offers courses ranging from programming, game development, to AI. We’re globally acknowledged with over 250 supported courses designed to boost your career and shape you into a dynamic professional.

We offer an extensive collection of Python courses and a comprehensive Python Mini-Degree program designed for complete beginners to experienced programmers. And it’s not just about learning – we provide certification upon completion to make your professional portfolio even more impressive.

Our courses are powered by certified professionals from Unity Technologies and CompTIA and are tailored to match the learning pace and career goals of every student. And so, with us, you begin as a beginner and leave as a professional.

Get ready to learn coding, create games, and earn certificates with Zenva – your stepping stone to the world of programming.


In the realm of programming, learning never stops, and every new module studied opens up a new field of application. Python’s ‘urllib’ module is a significant aspect of this non-ending learning journey. Armed with this wide range of networking capabilities, you can now dive into a wealth of applications from web scraping to interactive online game development. Go ahead and build brilliant systems powered by web data right at your fingertips.

Ready for your next coding adventure? Don’t forget to explore our Python Mini-Degree for a comprehensive learning experience. Whether you’re looking to enhance your career or delve into new areas of tech explorations, Zenva plans the optimal route for you. The journey of becoming an accomplished Python programmer begins here!

Did you come across any errors in this tutorial? Please let us know by completing this form and we’ll look into it!

Python Blog Image

FINAL DAYS: Unlock coding courses in Unity, Godot, Unreal, Python and more.