У меня есть следующее html тело, которое дает список элементов. Пожалуйста, имейте в виду, что это html только для демонстрации. В самом теле, список содержит более 20 свойств.
<dl>
<dt class="sc-ellipsis">Merk</dt>
<dd>
<a href="https://www.autoscout24.nl/auto/audi/">Audi</a>
</dd>
<dt class="sc-ellipsis">Model</dt>
<dd>
<a href="/lst/audi/q3">Q3</a>
</dd> ....more properties like that
</dl>
Я хотел бы получить слова: Audi и Q3
Я могу просто сделать это в Selenium:
browser.find_elements_by_css_selector('dd')[0].text # to get Audi
browser.find_elements_by_css_selector('dd')[1].text # to get Q3
НО иногда некоторые элементы могут отсутствовать, поэтому я не могу полагаться на положение, упомянутое выше. Например, если Audi отсутствует, то это:
browser.find_elements_by_css_selector('dd')[0].text # now it returns Q3
возвращает Q3 . Один общий шаблон заключается в том, что Audi всегда будет следовать Merk * 1025 *, а Q3 всегда будет следовать Model . А именно, если Merk * 1031 * нет в корпусе html, Audi тоже не будет. Я попытался найти следующий элемент html Merk:
WebDriverWait(browser, 10).until(EC.visibility_of_all_elements_located((By.XPATH, './/[(@class="sc-ellipsis") and (text()="Merk")]/following-sibling::dd')))[0].text
Но это возвращает пустой список, что означает, что он не нашел Audi . Кто-нибудь знает, как получить следующий элемент Merk (или Model, или что-то еще в списке)? Я могу создать ловушку самостоятельно, поэтому, если Мерк не входит в список, не пытайтесь получить следующий элемент.
Заранее спасибо.