Очистить данные не видны в исходном файле Python

1

Я хочу очистить данные на веб-сайте https://www.climatechangecommunication.org/climate-change-opinion-map/. Я немного знаком с селеном. Но нужные мне данные, находящиеся под картой, и подсказка на карте не видны в исходном файле. Я прочитал несколько сообщений об использовании PhantomJS и других. Однако я не уверен, где и как начать. Может кто-то, пожалуйста, помогите мне начать.

Спасибо, Rexon

  • 0
    Не уверены, что вы имеете в виду под «картой», что конкретно? Что касается всплывающей подсказки, которая появляется при наведении курсора. Данные, которые заполняют всплывающую подсказку, вероятно, находятся в исходном файле в другом формате.
  • 0
    Все горизонтальные полосы под картой с процентами
Показать ещё 1 комментарий
Теги:
selenium
phantomjs

1 ответ

1
Лучший ответ

Вы можете использовать этот пример кода:

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://www.climatechangecommunication.org/climate-change-opinion-map/")

# switch to iframe
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@src = 'https://environment.yale.edu/ycom/factsheets/MapPage/2017Rev/?est=happening&type=value&geo=county']")))

# do your stuff
united_states = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//*[@id='document']/div[4]//*[name()='svg']")))
print(united_states.text)

# switch back to default content
driver.switch_to.default_content()

Выход:

50%
No
12%
Yes
70%
United States

Снимок экрана с элемента:

Изображение 174551

Объяснение: во- первых, чтобы иметь возможность взаимодействовать с элементами под картой, вы должны переключиться на контент iframe, иначе невозможно взаимодействовать с этими элементами. Затем данные под картой находятся в svg тегах, которые также не являются тривиальными. Чтобы иметь возможность сделать это, вы предоставили образец.

PS: Я использовал WebDriverWait в своем коде. С помощью WebDriverWait ваш код становится более быстрым и стабильным, так как Selenium ждет особых условий, таких как visibility или clickable определенного элемента. В образце кода драйвер ждет не менее 10 секунд, пока ожидаемое условие не будет выполнено.

  • 0
    Не могли бы вы узнать, как я могу получить доступ к исходному коду внутри iframe. Я хочу передать штаты и округа в выпадающих меню. Я могу получить список всех штатов и округов, но когда я использую click (), ничего не происходит. Заранее спасибо.
  • 0
    Вы можете создать новый вопрос с деталями и отправить ссылку на него мне. Я постараюсь помочь тебе

Ещё вопросы

Сообщество Overcoder
Наверх
Меню