Я пытаюсь очистить данные диаграммы с этой страницы https://www.focusireland.ie/resource-hub/latest-figures-homelessness-ireland/
Справа вверху есть диаграмма с подробным описанием Количество бездомных в Ирландии.
Я пытаюсь очистить в Интернете ось Июл - 14 и соответствующее ей значение 3258. Но я не смог найти этот элемент и его значение с помощью x-path.
Я пробовал что-то вроде этого, чтобы очистить значение
Val1 = driver.find_element_by_xpath("//*[@id='chart']/div[7]").text
и это не сработало.
И попробовал это: -
element_to_hover_over = driver.find_element_by_xpath("//div[@class='label series smaller' | @class='label series smaller hover']/span[text()='Jul-14'").text
print(element_to_hover_over)
Это тоже не сработало для меня и вернуло сообщение об ошибке как
Unable to locate an element with the xpath expression //div[@class='label series smaller' | @class='label series smaller hover']/span[text()='Jul-14' because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//div[@class='label series smaller' | @class='label series smaller hover']/span[text()='Jul-14'' is not a valid XPath expression.






Данных нет на этом сайте. Вам необходимо проанализировать исходный iframe диаграммы (datawrapper.dwcdn.net/**). Затем вам нужно извлечь и проанализировать переменную JS (__dw.params.data).
Это не так уж и сложно, посмотри это.
Посмотрите на ссылку, которую я предоставил, а затем просто запустите wd.execute_script("return __dw.params.data"). Это будет строка, которую легко проанализировать.
Вы можете попробовать следующий код, чтобы получить текст:
element_to_hover_over = firefox.find_element_by_xpath("//span[text()='Jul-14']")
hover = ActionChains(firefox).move_to_element(element_to_hover_over)
hover.perform()
element_to_hover_over = firefox.find_element_by_xpath("//div[@class='label value outline showOnHover hover']/span")
Ваша вторая диаграмма находится внутри фрейма, сначала вам нужно переключиться в фрейм: -
frame :- datawrapper-chart-8ZOKk
затем попробуйте ниже xpath, чтобы получить значение в списке
list <webElement> = (//div[@class='label series smaller' and @data-column='X.1'])[1]/span
затем перебрать каждую строку и получить значение
это даст мне значение 3258. Но получение значения Jul-14 все еще остается задачей.
вы можете element_to_hover_over .text, чтобы получить значение
попробуйте следующее: - // div [@ class = 'label series младше' | @ class = 'ярлык серии меньше при наведении'] / span [text () = "Jul-14"]
Извините, но я думаю, вы не поняли мою точку зрения. Я хочу вернуться от диаграммы к таблице. Итак, я хотел бы написать динамический код - здесь мы вводим переменную как Jul-14 в element_to_hover_over
Обновил мой ответ
Мне так сложно это понять. Я действительно не знаю, как использовать ваш код в моей программе. Код возвращает ошибку. Я собираюсь вернуться к своим основам и прочитать их. Я не специалист в этом вопросе. Мне нужны эти данные для некоторого анализа. Если можете, перефразируйте свой код так, чтобы он работал гладко, если я скопирую и вставлю, это будет полезно. Мне нехорошо снова об этом спрашивать.
Позвольте нам продолжить обсуждение в чате.
: - Подскажите, пожалуйста, что для одной из осей. Мне очень трудно понять это, не имея опыта работы с JS.