Значение пузырькового рейтинга представляется как число в конце имени класса. Каждый пузырь имеет значение 10, поэтому ui_bubble_rating bubble_30
- это рейтинг с 3 из 5 заполненных пузырьков. Аналогично ui_bubble_rating bubble_45
будет заполнено 4,5 из 5 пузырьков. Вы можете найти все эти экземпляры с помощью регулярного выражения, так как число меняется.
bubblereview = data.find_all('span', {'class': re.compile('ui_bubble_rating bubble_\d*')})
Полученный список:
[<span class="ui_bubble_rating bubble_45"></span>,
<span class="ui_bubble_rating bubble_45"></span>,
<span class="ui_bubble_rating bubble_40"></span>,
<span class="ui_bubble_rating bubble_30"></span>,
<span class="ui_bubble_rating bubble_50"></span>,
<span class="ui_bubble_rating bubble_50"></span>,
<span class="ui_bubble_rating bubble_30"></span>,
<span class="ui_bubble_rating bubble_40"></span>,
<span class="ui_bubble_rating bubble_35"></span>,
<span class="ui_bubble_rating bubble_40"></span>,
<span class="ui_bubble_rating bubble_40"></span>,
<span class="ui_bubble_rating bubble_45"></span>,
<span class="ui_bubble_rating bubble_40"></span>]
Вы можете отфильтровать оценки следующим образом:
ratings = re.findall('\d+', ''.join(map(str, bubblereview)))
# ['45', '45', '40', '30', '50', '50', '30', '40', '35', '40', '40', '45', '40']