Стратегия поиска элементов Selenium для очистки текста из таблицы, которая обновляет данные каждые 10 минут

Я пытаюсь получить текстовое значение силовой нагрузки на Тайване из таблицы, которая обновляется каждые 10 минут.

Веб-страница: https://www.taipower.com.tw/tc/page.aspx?mid=206 .

Я испробовал множество подходов, и все они приводили к сообщению об ошибке «нет такого элемента: невозможно найти элемент» или к эквивалентному результату после использования явного ожидания. К сожалению, API для записи данных недоступен.

Вот HTML-код, содержащий нужные данные «latest_load»:

      <tbody><tr>
        <td>        
              <div class="col-xs-5 labelx">目前用電量</div>
              <div class="col-md-5 col-xs-5"><h5><span id="latest_load">2,937.9</span></h5></div><p style="margin-top:4%; color:#A9B1EA;text-align: center;">萬瓩</p>

Моя конечная цель — получить значение «latest_load», равное «2937,9».

Я не уверен, что:

а.) мой общий подход к кодированию и очистке выбранных библиотек неверен для формата этой конкретной веб-страницы, особенно с учетом того факта, что веб-страница обновляется каждые 10 минут. б.) моя конкретная стратегия или выполнение выбора элемента является источником ошибки в.) комбинация a+b

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

      from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait


driver = webdriver.Chrome()
driver.get("https://www.taipower.com.tw/tc/page.aspx?mid=206")
driver.maximize_window()
driver.execute_script("window.scrollBy(0,300)","")

wait = WebDriverWait(driver,30)
load = wait.until(EC.presence_of_element_located((By.ID, 'col-md-5 col-xs-5')))
#load = wait.until(EC.presence_of_element_located((By.XPATH, "//span[@id='latest_load']")))
#load = driver.find_element(By.CSS_SELECTOR, '#latest_load')
#load = driver.find_element(By.XPATH, "//span[@id='latest_load']")
print(load.text)

driver.close()

0 ответов

Другие вопросы по тегам