#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"