【问题标题】:Advice on how to scrape information off an interactiver map?关于如何从交互式地图上抓取信息的建议?
【发布时间】:2019-04-25 18:22:35
【问题描述】:

网址 = https://geoportal.minetur.gob.es/VCTEL/vcne.do 如果您点击该链接,它将带您进入一个包含交互式地图的网站。这张地图显示了西班牙的所有电信塔。但是,只有在您放大到足够大(缩放栏的阴影区域)时,才能看到塔。塔显示为蓝点,单击时会显示信息。我的目标是收集有关西班牙每座塔楼的信息,以确保我不会错过任何信息。我只是想知道是否有人可以提供有关解决此问题的最佳方法的任何见解。

我只想到了两件事:

  • 在地图上手动移动,点击所有使用 selenium 出现的塔

  • 每个塔都有一个代码,这意味着我可以通过将代码直接放在 url 中来访问有关该塔的信息,但是虽然代码确实有一些顺序,但有些是完全随机的,所以我可能会这条路错过了好几座塔。

任何帮助表示赞赏!

【问题讨论】:

  • 嗯!看起来有趣且具有挑战性,因为我们必须在较暗的一侧放大到最后 4 个级别,所以我们不确定放大时所覆盖的区域。考虑使用省和市,但仍然没有显示塔……但是,我能够使用 css div#map image[id*='OpenLayers.Geometry'] 识别缩放区域中的所有塔。
  • 所以每个塔都没有关联一个数字?使用该 css 可以识别放大区域中的所有塔吗?
  • 每个塔都有一个编号。但是,您可以获取所有的塔元素(towers),然后遍历所有的塔元素并单击它们中的每一个以获取详细信息。
  • 但是我怎样才能得到所有的塔元素呢?

标签: python selenium interactive


【解决方案1】:

放大到该区域后,您可以使用以下代码获取缩放区域中的所有塔并获取每个塔的属性。

towers = driver.find_elements_by_css_selector("div#map image[id*='OpenLayers.Geometry']")
each tower in towers:
     # click on tower
     tower.click()
     # get the properties here

我看到的唯一缺点是无法获得该国所有的塔楼,我们必须放大到每个区域才能显示塔楼。

【讨论】:

    猜你喜欢
    • 2014-10-01
    • 1970-01-01
    • 2015-08-12
    • 2019-01-01
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    相关资源
    最近更新 更多