Unparalleled suite of productivity-boosting Web APIs & cloud-based micro-service applications for developers and companies of any size.


Python Web Scraping Tutorial: Step-by-Step [2023 Guide]

python web scraping

Using Python can be a practical starting point in web scraping. Python classes and objects are far easier to use than many other programming languages. Therefore, web scraping with Python is the most commonly adopted web scraping project.

Furthermore, numerous libraries exist that make scripts in web scraping with Python very easy. This tutorial explains everything needed for a straightforward application. Let’s dig into this exciting concept of the web scraping process. We will start from the fundamentals to get a complete understanding of the whole process.

python web scraping for all the data on web pages using href attribute csv file and javascript code

What Are Some Important Web Fundamentals?

First of all, we should be very clear about the fact that it takes different technologies to view a simple web page. This tutorial may not highlight details on each of those technologies. But we will explain those few technologies that are helpful in web scraping through Python code. Let’s dig into it.

Python Web Scraping: HyperText Transfer Protocol

HTTP makes use of the client/server models to perform functions. An HTTP client opens the connection to send a message to our server. The server will return a code response, and the connection is closed.

When we write a website address in our browser, it forms a code like this:

Since we want to fetch or get data extraction, we can see the use of “GET” at the top. This is one of the HTTP methods. There are so many other HTTP methods to use. For example, POST, PUT, HEAD, and DELETE.

Then there is an address that we want to interact with.

parse html and extracting data using python community in chrome browser job listings

There also exists the version of HTTP. In this tutorial, we have to focus on HTTP1. Then there are different header files, such as connection and user-agent. Some important header files are:


  • Indicates the hostname for which we send the request
  • Important for name-based virtual hosting


  • User-agent has information about the client that initiates the request
  • It is either used for statistics or the prevention of violations by bots
  • Modifiable


  • List of MIME types our clients accepts in the form of responses from our server
  • The types of content are numerous, such as application/JSON, image/JPEG, and text/HTML


  • Includes a list of name-value pairs
  • Describes the way our website stores the data. The data could have some expiration date or be temporary until we close the browser. The first is standard cookies, and the second is session cookies
  • Cookies are used for purposes like authentication, user preferences, user tracking, and much more


  • It contains a URL from which we requested the actual URL
  • It is used to change the behavior of websites based on where the user came from

Once we send the request to the server, we will get the response as under:

200 Ok shows that the request was handled properly. Then we have response headers.

After the response headers, we got a blank line and then a piece of data for which we requested.

Let’s explore different ways of sending HTTP requests to fetch data using Python.

How To Send The HTTP Requests By Manually Opening A Socket?


Opening a TCP socket to send an HTTP request manually is the most basic way to perform web scraping in Python. For example:

Regular Expressions

Once we get an HTTP response, we use regular expressions to extract data. A regular expression is a versatile tool in the form of a string that uses a standard syntax to define the search pattern.

It helps in validating, handling, and parsing data. Regular expressions can help us when we get the data as under:

We use the XPath expression to select this text code, and then use the statement given below to get the price:

Using HTML tags for this purpose can be a little tricky, but we can do it simply as under:

The process is a little complicated, but we can use high-level APIs to do it easily. Let’s check the easiest way to do it. 

How To Web Scrape In Python Using Zenscrape API Easily?

Zenscrape is the most reliable web scraper tool we use easily. We can scrape data without getting blocked, and perform extraction at a scale. It has easy-to-follow Zenserp documentation that developers and web scrapers use without complications.

What Is The Role Of urllib3 & LXML In Python Web Scraping?

Urllib and Urllib2 are the two most popular libraries of the standard library urllib in Python. Urllib2 is also known as urllib3. It is a high-level package that allows us to do so much with an HTTP request.

Simply put, we use fewer lines of codes in urllib3 compared to the previous section to extract data. For example,

Now, if we use a proxy and add some headers, we use the code as:

This is how we perform web scraping using very few lines of code. Now let’s move to XPath.


XPath is a technology that is much similar to the CSS selectors concept. It uses path expressions to select nodes or node sets. We need three things to extract data from XPath:

  • Some XPath expressions
  • HTML document
  • An Xpath engine to run the expressions

We will use LXML to assist in the whole process. It is a fast XML and HTML library that supports Xpath.

First, we install by using the code as under:

Then we get:

The output comes as under:

This is just a simple example of XPath. We can perform some more powerful tasks using XPath.

website's server page source in python standard library for web servers html string

How To Use Beautiful Soup & Requests Library?


Requests are the most commonly used Python package, with more than 11,000,000 downloads. First, we install it as:

Then, we make a request as under:

Authentication to Hacker News

Let’s suppose we build a Python scraper. It aims to submit a blog to any forum. Here we will take an example site as hacker news. We will need to authenticate on those forums before posting anything. This is where beautiful shops and requests help us. The login form of hacker news is as follows:

web requests source code in python file headless browser for relevant data or specific data

We see three <input> tags with a (name) attribute here. The first one has a type hidden with the name “goto,” while the others two are passwords and usernames. When we submit the form using Chrome, it takes a cookie to make the server know the authentication.

Handling cookies in such a case is done through the Session object. This is how easily requests perform the process.

Beautiful Soup

First, we need to install it:

Then we need to post three inputs as under:

Then, we need to inspect the Hacker News page’s HTML content, as given in the screenshot below:

analyzing data through python libraries

We need to find <tr> tag with class (athing) through the code below:

Then, we extract the URL, ID, Rank, and title through the code below:

Now let’s make the scraper a bit more robust!

Storing Web scraping data in PostgreSQL

First of all, we pick the appropriate package for the operating system. Then, we install it and set up a database. After this, we add a Hacker News table link to it:

Install Psychopg as under:

We get the connection as under:

Then we get a database cursor:

Then, we use execute to run the command:

We have to (commit) our implicit database transaction. And, we are ready to go after one more con.commit()

Here is the complete code to store data in the database:

Python Web Scraping: Conclusion

The examples above show that Beautiful soup and requests are great libraries for different functions. This is how easily we use the Python library to scrape websites. But we need to handle multiple parts by ourselves when performing the web scraping.


Is Python Good for Web Scraping?

Yes. Python is the most popularly used language used for web scraping purposes.

What Can You Do With Python Web Scraping?

We extract data from different sites using Python web scraper tools. We can retrieve the unstructured data.

Is Python Web Scraping Easy to Learn?

Yes. It is easier to learn and understand than most other languages.

How Long Does It Take To Learn Python Web Scraping?

It depends on our Python skills. We can learn it within a day or a year.

Sign up for free now to scrape data using Zenserp and get 1000 requests per month for free in a free plan.

Related posts

The Evolution of Real-Time Stock Market Data APIs: Empowering Traders and Analysts


The Power of APIs for Foreign Currency Converter and Building Your Own Converter


Everything You Need to Know About Private IP Address Ranges


Building a Currency Converter: Leveraging JSON API for Accurate Exchange Rates

Leave a Reply

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