Возникли проблемы с получением некоторого текста. Python. Селен

#python #selenium #web-scraping

#python #селен #очистка веб-страниц

Вопрос:

Пытаюсь получить финансовые данные из этого div . Для этого нет уникального идентификатора div . Итак, я собираю все 3-4 divs проверки FINANSE , появляется ли слово в тексте, если оно появляется, затем получаю внутренний div текст. Однако, похоже, это не работает. Любой другой подход или чего мне здесь не хватает? Заранее спасибо.

ссылка = https://rejestr.io/krs/882875/fortuna-cargo

 fin_divs = driver.find_elements_by_css_selector('div.card.mb-4')
for div in fin_divs:
    if 'FINANSE' in div.text:
        finances = div.find_element_by_css_selector('div.card-body').text
    else:
        finances = "Finance Data Not Available"
 

Ответ №1:

Вы можете упростить свой код, чтобы выбрать точный элемент вместо перебора списка элементов:

 finances = driver.find_element_by_xpath('//div[div="Finanse"]/div[@class="card-body"]').text
print(finances)

>>>Kapitał zakładowy
>>>5 tys. zł
 

Комментарии:

1. Ух ты!.. Что это такое? Можно ли искать div текст в самом «xpath`?

2. @AbhishekRai вы можете выбрать элемент с точным текстом или элемент, содержащий некоторый частичный текст ( div[contains(., "<PARTIAL_TEXT>")] )

Ответ №2:

Вы все делаете правильно, просто добавьте break в if инструкцию, чтобы не перезаписывать finances "Finance Data Not Available" после нахождения правильного:

 fin_divs = driver.find_elements_by_css_selector('div.card.mb-4')
for div in fin_divs:
    if 'FINANSE' in div.text:
        finances = div.find_element_by_css_selector('div.card-body').text
        break
    else:
        finances = "Finance Data Not Available"