Я пытаюсь использовать селен, чтобы помочь получить данные с веб-сайта, который использует javascript для загрузки информации.Как найти элементы в таблице с Python и Selenium?
Вы можете увидеть ссылку здесь: Animal population
страница показывает некоторые выбираемые поля, для моей цели я пытаюсь получить данные о популяции пчел, в Соединенном Королевстве за 2011 год
После отправки выбранных полей страница будет загружать таблицу с соответствующими данными. Я хочу только получить Население и Плотность номера для Вся страна.
В моем коде пока не указаны поля года, страны и вида, и после возвращения таблицы он находит поле «Вся страна» (не стесняйтесь сообщать мне, как улучшить мой существующий код тоже).
Мне не удалось получить поля народонаселения и плотности для всей страны, я попытался использовать xpath и «следующий родной брат», но он показывает и исключает, чтобы найти элементы.
Я также не хочу полагаться на позицию строк/ячеек, так как я также попытаюсь получить эту информацию в течение следующих лет, и поля таблицы изменят положение.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get('https://www.oie.int/wahis_2/public/wahid.php/Countryinformation/Animalpopulation')
select = Select(driver.find_element_by_id('country6'))
select.select_by_value('GBR')
select = Select(driver.find_element_by_id('year'))
select.select_by_value('2011')
try:
element = WebDriverWait(driver, 40).until(EC.presence_of_element_located((By.CLASS_NAME, "TableContent ")))
print element
select = Select(driver.find_element_by_id('selected_species'))
select.select_by_value('1')
except:
print "Not found"
country_td = driver.find_element(By.XPATH, '//td/b[text()="The Whole Country"]')
#population_td = driver.find_element(By.XPATH, '//td/b[text()="The Whole Country"]/following-sibling::text()')
print country_td.text
Благодарим за помощь.
спасибо, первый ответ работает. Я изменил синтаксисы: population = driver.find_element (By.XPATH, '// td [b [текст() = «Вся страна»]]/следующее-сиблинг :: td [1]') плотность = driver.find_element (By.XPATH, '// td [b [текст() = «Вся страна»]]/следующее-сиблинг :: td [2]') – Ana