Вы можете получить все элементы name ('class1') и проверить, имеют ли они соответствующий элемент age ('class2').
from bs4 import BeautifulSoup
html = """
<div class='parent'>
<div class="class1">Jill</div> <div class="class2">50</div>
<div class="class1">Jane</div>
<div class="class1">Joe</div> <div class="class2">12</div>
</div>
"""
soup = BeautifulSoup(html)
name_tags = soup.find_all('div', {'class': 'class1'})
name_age_pairs = []
# Iterate through all 'class1' elements and see if the next sibling is 'class2'
for name_tag in name_tags:
name_next_div = name_tag.find_next('div')
age = None
if 'class2' in name_next_div['class']:
age = int(name_next_div.string)
name_age_pairs.append((name_tag.string, age))
print(name_age_pairs)
name_age_pairs
будет содержать:
[('Jill', 50), ('Jane', None), ('Joe', 12)]
Где «Нет» означает, что возраст не связан со вторым человеком.