Как удалить активные данные, сгенерированные js на карте - PullRequest
0 голосов
/ 07 мая 2019

Я новый пользователь Python и хочу почистить данные с этого сайта: https://www.telerad.be/Html5Viewer/index.html?viewer=telerad_fr

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

import requests
from lxml import html

page = requests.get('https://www.telerad.be/Html5Viewer/index.html?viewer=telerad_fr')
tree = html.fromstring(page.content)

cities = tree.xpath('//*[@id="map-container"]/div[6]/div[2]/div/div[2]/div/div/div[1]/div/p[1]/text()[2]')


print('Cities: ', cities)

1 Ответ

0 голосов
/ 07 мая 2019

На самом деле есть xpath для нажатия на кнопки:

//*[@id='0_layer']/*[@fill]

Здесь, попробуйте это (селен):

dotList = driver.find_elements_by_xpath("//*[@id='0_layer']/*[@fill]")
for dot in dotList:
    dot.click()
    cities = driver.find_element_by_xpath("//div[@data-region-name='NavigationMapRegion']//p[1]")
    print("Cities: ", cities.text)
    closeBtn = driver.find_element_by_xpath("//*[@class='panel-header-button right close-16']")
    closeBtn.click(); #the modal can intercept clicks on some dots, thats why we close it here after extracting the info we need.

этот код нажимает (или, по крайней мере, пытается,если не возникает никаких исключений StaleElementException) все оранжевые точки на карте и распечатайте содержимое "Города" (на основе вашего Xpath).

Если кто-то обнаружит ошибку в коде, отредактируйте этот ответ, я написал этов блокноте ++.

...