Python Selenium Web Очистка данных с диаграмм

Я пытаюсь очистить данные диаграммы с этой страницы 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.
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
1 729
2

Ответы 2

Данных нет на этом сайте. Вам необходимо проанализировать исходный iframe диаграммы (datawrapper.dwcdn.net/**). Затем вам нужно извлечь и проанализировать переменную JS (__dw.params.data).

Это не так уж и сложно, посмотри это.

: - Подскажите, пожалуйста, что для одной из осей. Мне очень трудно понять это, не имея опыта работы с JS.

CodingDawg 23.04.2018 16:13

Посмотрите на ссылку, которую я предоставил, а затем просто запустите wd.execute_script("return __dw.params.data"). Это будет строка, которую легко проанализировать.

Nestor Yanchuk 24.04.2018 13:25

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

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

element_to_hover_over.text

Ваша вторая диаграмма находится внутри фрейма, сначала вам нужно переключиться в фрейм: -

frame :- datawrapper-chart-8ZOKk

затем попробуйте ниже xpath, чтобы получить значение в списке

list <webElement> = (//div[@class='label series smaller' and @data-column='X.1'])[1]/span

затем перебрать каждую строку и получить значение

это даст мне значение 3258. Но получение значения Jul-14 все еще остается задачей.

CodingDawg 23.04.2018 16:22

вы можете element_to_hover_over .text, чтобы получить значение

Ankur Singh 23.04.2018 16:25

попробуйте следующее: - // div [@ class = 'label series младше' | @ class = 'ярлык серии меньше при наведении'] / span [text () = "Jul-14"]

Ankur Singh 23.04.2018 16:31

Извините, но я думаю, вы не поняли мою точку зрения. Я хочу вернуться от диаграммы к таблице. Итак, я хотел бы написать динамический код - здесь мы вводим переменную как Jul-14 в element_to_hover_over

CodingDawg 23.04.2018 16:33

Обновил мой ответ

Ankur Singh 23.04.2018 16:48

Мне так сложно это понять. Я действительно не знаю, как использовать ваш код в моей программе. Код возвращает ошибку. Я собираюсь вернуться к своим основам и прочитать их. Я не специалист в этом вопросе. Мне нужны эти данные для некоторого анализа. Если можете, перефразируйте свой код так, чтобы он работал гладко, если я скопирую и вставлю, это будет полезно. Мне нехорошо снова об этом спрашивать.

CodingDawg 23.04.2018 16:57

Позвольте нам продолжить обсуждение в чате.

CodingDawg 23.04.2018 17:00

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