Я пытаюсь разобрать BeautifulSoup
ужасную страницу HTML, чтобы получить несколько информации. Код ниже:Как получить доступ к элементам по пути?
import bs4
with open("smartradio.html") as f:
html = f.read()
soup = bs4.BeautifulSoup(html)
x = soup.find_all("div", class_="ue-alarm-status", playerid="43733")
print(x)
извлекает фрагменты я хотел бы проанализировать далее:
[<div alarmid="f319e1fb" class="ue-alarm-status" playerid="43733">
<div>
<div class="ue-alarm-edit ue-link">Réveil 1: </div>
<div>allumé</div>
<div>7:00</div>
</div>
<div>
<div class="ue-alarm-dow">Lu, Ma, Me, Je, Ve </div>
<div class="ue-alarm-delete ue-link">Supprimer</div>
</div>
</div>, <div alarmid="ea510709" class="ue-alarm-status" playerid="43733">
<div>
<div class="ue-alarm-edit ue-link">Réveil 2: </div>
<div>allumé</div>
<div>7:30</div>
</div>
<div>
<div class="ue-alarm-dow">Sa </div>
<div class="ue-alarm-delete ue-link">Supprimer</div>
</div>
</div>]
Я заинтересован в получении:
- час (строка 5 и 14)
- строка (дни по-французски) под
<div class="ue-alarm-dow">
Я считаю, что на днях достаточно повторить find()
или find_all()
. Я упоминаю, что, поскольку в то время как она захватывает нужную информацию, я не уверен, что это правильный путь, чтобы разобрать файл с BeautifulSoup (но, по крайней мере, он работает):
for y in x:
z = y.find("div", class_="ue-alarm-dow")
print(z.text)
# output:
# Lu, Ma, Me, Je, Ve
# Sa
Я не знаю, как получить до часа. Есть ли способ навигации по дереву по пути (в том смысле, что я знаю, что час находится под вторым <div>
, три <div>
глубоко)? Или я должен делать это по-другому?