CodeGym /Courses /Python SELF EN /Extracting Text and Attributes from HTML Elements with Be...

Extracting Text and Attributes from HTML Elements with BeautifulSoup Methods

Python SELF EN
Level 32 , Lesson 0
Available

1. Introduction to Text Extraction Methods

Today, we’ll learn how to extract precious text data and attributes from HTML elements. Forget your machetes, because with BeautifulSoup, working with code feels more like walking through an autumn orchard, where apples just beg to be picked. Ready to reap the fruits of your learning? Let's get started!

Text extraction methods are first on our list. Before diving into text extraction, let’s load the page.

Python

import requests
from bs4 import BeautifulSoup

# Loading the HTML code of the page
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

Now we have a soup object that contains the tree-like structure of our HTML document. Let’s extract text from some tag element, like a heading.

The .text and get_text() Methods

The .text property and its counterpart - the get_text() method - allow you to get the textual content of an element (and all its nested elements).

Python

# Extracting text from the first found h1 heading
h1_tag = soup.find('h1')
print(h1_tag.text) # or h1_tag.get_text()

Try it yourself: find other elements using the search methods we covered in previous lectures, and extract text from them. You’ll be amazed at how much information you can get!

2. Extracting Attribute Values

Text is great, but sometimes important data is hidden in attributes, like passports in pockets. Imagine you need to find out a link’s address or get the URL of an image (and don’t ask me why; maybe you want to collect a catalog of cute cat pics).

Extracting Attribute Values

Suppose we have a link element <a href="https://example.com">Example</a>. How do we get its href value? It's simple.

Python

# Extracting a link
a_tag = soup.find('a')
link = a_tag['href']
print("Link:", link)

This code pulls the value of the href attribute. Any other useful attributes can be extracted in a similar way.

Trying to Grab an Image

Extracting an image URL can be just as simple. Let’s consider an example with <img src="image.jpg" alt="Cat">.

Python

# Extracting an image URL
img_tag = soup.find('img')
image_url = img_tag['src']
print("Image URL:", image_url)

The beauty of working with BeautifulSoup is that it makes it easy to find and extract data without making us worry much about how the HTML structure works.

3. Examples of Extracting Text and Attributes

Time to dive into some examples. Let’s tackle a slightly more complex task: extracting all the links on a page, along with the text inside <a> tags.

Example: Extracting All Links with Text

Python

# Finding all a tags
a_tags = soup.find_all('a')

# Printing links and text
for a_tag in a_tags:
 link = a_tag['href']
 text = a_tag.get_text()
 print(f"Text: {text}, Link: {link}")

As you can see, the find_all method conveniently finds all elements matching the search criteria, while the for loop lets you iterate over each one.

4. Handling Errors

Don’t forget about error handling. Sometimes the HTML structure might not be what you expect, or an element might lack the expected attribute. Make sure your code doesn’t "crash" on such issues.

Python

# Example of handling errors when extracting an attribute
try:
 link = a_tag['href']
except KeyError:
 link = None
 print("The href attribute was not found!")

This will make your script more robust, so it won’t stop due to one unexpected error.

5. Real-Life Application

In 2019, a Russian entrepreneur shared a story about how his company, specializing in data scraping, achieved a turnover of 20 million rubles a year. He noted that automated data collection doesn’t stifle competition but actually helps businesses adapt to the market.

For example, one client ordered a scraper for daily collection of product stock data from a supplier’s website, which allowed them to quickly update inventory and prices in their own online store. The entrepreneur also emphasized that, despite some sites’ attempts to complicate scraping, modern technologies enable businesses to effectively bypass such obstacles, providing access to the necessary data for strategic decisions.

1
Task
Python SELF EN, level 32, lesson 0
Locked
Basic Text Extraction
Basic Text Extraction
2
Task
Python SELF EN, level 32, lesson 0
Locked
Link Extraction
Link Extraction
3
Task
Python SELF EN, level 32, lesson 0
Locked
Extracting Image Attributes
Extracting Image Attributes
4
Task
Python SELF EN, level 32, lesson 0
Locked
Comprehensive Data Extraction
Comprehensive Data Extraction
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION