Python Web抓取 - 如何定位map元素的坐标?

时间:2016-11-15 21:22:06

标签: python selenium web-scraping

我正在做一些网页抓取并使用selenium和python。我无法找到地图元素并从中获取经度和纬度。任何人都可以看看代码。这是我的代码,

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import time

# create a new Firefox session
driver = webdriver.Firefox()
driver.implicitly_wait(30)
driver.maximize_window()

# navigate to the application home page
driver.get("http://www.zoopla.co.uk/to-rent/commercial/details/41716558?search_identifier=c2df4fb926a1dd55be2a0e31c706380b#1cy1zTwJA1aKrxcV.97")
maps = driver.find_element_by_xpath("//*[@id='listing-details-tabs']/ul/li[2]")
maps.click()

laltong=driver.find_element_by_xpath("//*[@id='bto-rent-commercial']/script[6]/text()")
print(latlong.text)

我知道用于定位元素的xpath是完全错误的,因为我甚至无法找到该元素。有什么建议吗? 这是指向网页的链接 - http://www.zoopla.co.uk/to-rent/commercial/details/42080041?search_identifier=f02093ba0369b1204ac8cf6369e419f5#RuZu0HmxXSL3auBJ.97,然后点击地图和附近。

我尝试的最新代码是,

laltong=driver.find_element_by_xpath("//*[@title='Click to see this area on Google Maps']/div/div[1]/a")
print(latlong.get_attribute("href"))

,错误是,

Unable to locate element: {"method":"xpath","selector":"//*[@title='Click to see this area on Google Maps']/div/div[1]/a"}

1 个答案:

答案 0 :(得分:1)

对于那些以后来的人,如果你:

  1. 导航至this link
  2. 点击地图&附近的标签
  3. 点击地图左下方的Google徽标(浅色背景上的白色文字......很难看到)
  4. 这将打开OP正在寻找的地图。

    现在开始...... A标签看起来像

    <a target="_blank"
      href="https://maps.google.com/maps?ll=51.552574,-0.052437&amp;z=15&amp;t=m&amp;hl=en-US&amp;gl=US&amp;mapclient=apiv3"
      title="Click to see this area on Google Maps"
      style="position: static; overflow: visible; float: none; display: inline;">...</a>
    

    href属性是我们想要的重要位。

    要获取此A标记,我们可以使用CSS选择器"a[title='Click to see this area on Google Maps']"来查找元素。从那里你会得到href属性,我假设你知道该怎么做。

    更新后,我发现您正在使用XPath。您的XPath已关闭,但包含title="Click to see this area on Google Maps"的元素是您想要的A,因此XPath将为"//a[@title='Click to see this area on Google Maps']"。我建议你使用CSS选择器,因为它们更快,更不容易出错。

    CSS selectors reference

    CSS selectors tips