如何在地图上抓取js生成的活动数据
How to scrapr active data generated by js on a map
我是新 python 用户,我想从这个网站抓取数据:https://www.telerad.be/Html5Viewer/index.html?viewer=telerad_fr
我的问题是数据是动态生成的。我阅读了很少的修复可能性,但 none 令人满意。使用硒,我需要一个名称或 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)
实际上有一个 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.
此代码点击(或至少尝试点击,如果没有发生 StaleElementExceptions)地图上的所有橙色点,并打印 "Cities" 内容(基于您的 Xpath)。
如果有人在代码中发现错误,请编辑这个答案,我在记事本++上写的。
我是新 python 用户,我想从这个网站抓取数据:https://www.telerad.be/Html5Viewer/index.html?viewer=telerad_fr
我的问题是数据是动态生成的。我阅读了很少的修复可能性,但 none 令人满意。使用硒,我需要一个名称或 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)
实际上有一个 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.
此代码点击(或至少尝试点击,如果没有发生 StaleElementExceptions)地图上的所有橙色点,并打印 "Cities" 内容(基于您的 Xpath)。
如果有人在代码中发现错误,请编辑这个答案,我在记事本++上写的。