2016-11-15 5 views
0

Ich mache ein bisschen Web Scraping und Selen mit Python. Ich bin nicht in der Lage, ein Kartenelement zu finden und die Breite und Länge von ihm zu erhalten. Kann jemand den Code ansehen? Dies ist mein Code,Python Web Scraping - Wie finde ich die Koordinaten des Kartenelements?

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) 

Ich verstehe, dass mein XPath das Elements zur Ortung völlig falsch ist, denn ich bin nicht einmal in der Lage, dieses Element zu lokalisieren. Irgendwelche Vorschläge dazu? Hier ist ein Link zu der Webseite - http://www.zoopla.co.uk/to-rent/commercial/details/42080041?search_identifier=f02093ba0369b1204ac8cf6369e419f5#RuZu0HmxXSL3auBJ.97 und klicken Sie auf Karte und in der Nähe.

Der letzte Code, i versucht,

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

und der Fehler ist,

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

keine Vorschläge sind möglich, ohne den HTML-Code des Elements zu kennen (en), die Sie zu zielen versuchen. – Clive

+0

Ya. Bitte klicken Sie auf den Link der Webseite, die ich mit der Frage hinzugefügt habe und klicken Sie dann auf die Tab-Karte. Danke –

+0

Bitte entfernen Sie den Link und stellen Sie sicher, dass die Frage beantwortet werden kann, ohne die Seite zu verlassen. Es ist nicht gut für Q + A, sonst – Clive

Antwort

1

Für diejenigen, die später kommen, wenn Sie:

  1. zu this link navigieren
  2. klicken Sie auf die Karte & in der Nähe Registerkarte
  3. Klick auf das Google-Logo in der unteren linken Ecke der Karte (weißer Text auf hellem Hintergrund ... es ist schwer zu sehen)

, dass die Karte öffnet, die OP für sucht.

nun mit, dass aus dem Weg ... der A Tag sieht aus wie

<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> 

wo das href Attribut das wichtige Bit ist, die wir wollen.

Um dieses A-Tag zu erhalten, können wir einen CSS-Selektor "a[title='Click to see this area on Google Maps']" verwenden, um das Element zu finden. Von dort würden Sie das href Attribut erhalten, von dem ich annehme, dass Sie bereits wissen, wie man macht.


Nach dem Update, ich sehe, dass Sie XPath verwenden. Ihr XPath ist in der Nähe, aber das Element, das title="Click to see this area on Google Maps" enthält, ist die A, die Sie wollen, damit der XPath "//a[@title='Click to see this area on Google Maps']" wäre. Ich würde vorschlagen, dass Sie CSS-Selektoren verwenden, da sie schneller und weniger fehleranfällig sind.

CSS selectors reference

CSS selectors tips

+0

Das hat funktioniert! Tausend Dank ! –

+0

nr. Ich habe die Antwort aktualisiert, um den XPath zu zeigen ... du warst nah dran. – JeffC