from bs4 import BeautifulSoup
html_doc = """<div class="sizeBlock">
<div class="size">
<a class="selectSize" id="44526" data-size-original="36.5">36.5</a>
</div>
<div class="size inactive active">
<a class="selectSize" id="44524" data-size-original="40">40</a>
</div>
<div class="size">
<a class="selectSize" id="44525" data-size-original="40.5">40.5</a>
</div>
</div>"""
soup = BeautifulSoup(html_doc)
for sizeBlock in soup.select('div.size'):
if sizeBlock.get('class') != ['size']:
continue
soup2 = sizeBlock.select('a.selectSize')[0]
aid = soup2.get('id')
size = soup2.get('data-size-original')
print(aid, size)
Вывод:
44526 36.5
44525 40.5
Объяснение:
if sizeBlock.get('class') != ['size']:
continue
Пропустит любой класс, который не является 'size' !=
не равен оператору. Так как для класса «размер неактивный активный» get('class')
возвращает ['size', 'inactive', 'active']
, этот блок передается в цикле.
sizeBlock.select('a.selectSize')
возвращает список
[<a class="selectSize" data-size-original="36.5" id="44526">36.5</a>]
и т. Д.
sizeBlock.select('a.selectSize')[0]
возвращает первый (и единственный) элемент этого списка.