Last modified: Sep 03, 2023 By Alexander Williams

Beautifulsoup image alt Attribute

In this tutorial, we'll learn how to find by the alt attribute. We'll also learn how to get the alt attribute value from the image tag.

Find by alt attribute

To find image elements by a specific alt attribute using BeautifulSou, we can use the find_all method with the attrs parameter. Here's an example:

from bs4 import BeautifulSoup

# HTML content
html_content = """
<html>
  <body>
    <img src="image.jpg" alt="A beautiful sunset">
    <img src="another_image.jpg" alt="Mountains">
    <img src="third_image.jpg">
  </body>
</html>
"""

# Parse the HTML content
soup = BeautifulSoup(html_content, 'html.parser')

# alt text you want to search for
alt_attribute = "A beautiful sunset"

# Find all elements by a specific alt attribute
elements_with_alt = soup.find_all('img', attrs={'alt': alt_attribute})

# Loop through the found elements
for element in elements_with_alt:
    print(element)

Output:

<img alt="A beautiful sunset" src="image.jpg"/>

In the above example, we've used the find_all method to find all img tags with the "A beautiful sunset" in the alt attribute value.

Get alt Attribute Value From Image

To get the alt attribute value from an image using BeautifulSoup, use the get() method. Here is the modification of the previous code to get the alt Attribute value:

from bs4 import BeautifulSoup

# HTML content
html_content = """
<html>
  <body>
    <img src="image.jpg" alt="A beautiful sunset">
    <img src="another_image.jpg" alt="Mountains">
    <img src="third_image.jpg">
  </body>
</html>
"""

# Parse the HTML content
soup = BeautifulSoup(html_content, 'html.parser')

# alt text you want to search for
alt_attribute = "A beautiful sunset"

# Find all elements by a specific alt attribute
elements_with_alt = soup.find_all('img')

# Loop through the found elements
for element in elements_with_alt:
    # Get alt attribute value
    alt_text = element.get('alt')
    
    if alt_text:
        print(f"Alt Text: {alt_text}")
    else:
        print("Alt attribute is empty for this image")

Output:

Alt Text: A beautiful sunset
Alt Text: Mountains
Alt attribute is empty for this image

Here, first, we find all the images. Then, Loop through the result. Finally, use get() method to get the alt attribute value.

Conclusion

By now, you should clearly understand how to find elements by their alt attribute and how to get the attribute value for image elements. I trust that this tutorial has been helpful to you.