Вы можете легко решить эту проблему с BeautifulSoup.
Учитывая разметку, которую вы разместили в своем вопросе, этот фрагмент кода должен извлечь id
и label
:
from bs4 import BeautifulSoup as bs
html = """<ul class='checklist__list'>
<li class=' checklist__item' id='checklist__item--country-111'>
<label class='checklist__label ripple-animation'>
<input class="checklist__input js-checklist__input idb-on-change" type="checkbox" id="111" name="country" value="111">
Germany
</input>
</label>
</li>"""
soup = bs(html)
label = soup.find("label").text
id = soup.find("input").get("value")
Вам придется очистить метку, так как в выводе есть посторонние пробелы и символы новой строки, но вы сможете расширить этот пример, однако вам потребуется дальнейшая обработка этих элементов.
Для обработки нескольких элементов списка, которые имеют одинаковый формат разметки, как указано выше, вы можете использовать этот фрагмент:
lis = soup.find_all("li") # This will return a list of all line items in the markup.
for li in lis:
li_label = li.find("label").text
li_id = li.find("input").get("id")
print(li_label, li_id)