Проблемы с извлечением текста из тега div с помощью Selenium - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь почистить таблицы, которые находятся под заголовком «Расходы на топливо и обслуживание» на этом сайте: https://www.signatureflight.com/locations/acy. Это включает бит «5,83 $ 100LL Full Service», а также приведенную ниже таблицу с тарифами и дополнительными преимуществами.

Я могу найти первую часть, используя driver.find_element_by_xpath('//span[contains(@data-bind, "text: formatCurrency")]').text, но это ничего не печатает. Я использую «содержит», если тип топлива отличается для других аэропортов.

Любая помощь будет признательна.

HTML для справки:

<div class="col-md-8 col-xs-7 fuelWrapper"> 
<span style="color: #00263d; font-size:25px" 
data-bind="text: formatCurrency(Fuel100LL)">$5.83</span><br> 
<span style="color: #00263d; font-size: 11px">100LL Full Service</span> </div>

1 Ответ

2 голосов
/ 01 марта 2020

Элемент ('// span [содержит (@ data-bind, "text: formatCurrency")]') нельзя удалить, поскольку он находится в свернутом аккордеоне.

Лучшее решение, которое я мог придумать - это прокрутить до элемента под кнопкой «Цены на топливо и обслуживание», затем щелкнуть по нему, а затем пересмотреть цену.

Я уверен, что кто-то другой может предложить лучшее решение с меньшим количеством строк кода.

Объяснение в комментарии к коду.

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome('./chromedriver')

driver.get("https://www.signatureflight.com/locations/acy")
# Get an element below the fees section to scroll to, so the Fuel & Service Rate will be visible
scroll_to = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "skyvector-heading")))
actions = ActionChains(driver)
# Scroll to that element
actions.move_to_element(scroll_to).perform()
# Find the Fuel & Service Rate link and click on it
btn = driver.find_element_by_css_selector("a[href='#fees']")
btn.click()
# Get the price
price = driver.find_element_by_xpath('//span[contains(@data-bind, "text: formatCurrency")]').text
print(price)

Вывод:

$5.83
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...