2017-07-03 5 views
1

Ich versuche, den Link von einer Seite mit Selen zu bekommen. Der Code ist unten:Problem mit Selenium-Eigenschaft Extraktion in Python

link = 'http://cancer.sanger.ac.uk/cosmic/sample/overview?id=2120881' 
driver = webdriver.Chrome() 
driver.get(link) 
elem = driver.find_element_by_link_text("Variants") 
elem.click() 
time.sleep(2) # wait to load 
elems = driver.find_elements_by_xpath("//table[@id='DataTables_Table_0']/tbody/tr[3]/td") 
elem = elems[4] 
print(elem.get_property('href')) 
print(elem.get_attribute("href")) 
print(elem.text) 

Warum ist das Ergebnis keine beim Abrufen von href? Wie kann ich diesen Link erhalten?

Vielen Dank im Voraus!

Antwort

2

Ihr Skript funktioniert nur okay. Das Problem ist in Ihrem xpath. Wenn Sie a Elemente möchten, müssen Sie sie finden und nicht die äußere td. Ändern

elems = driver.find_elements_by_xpath("//table[@id='DataTables_Table_0']/tbody/tr[3]/td") 

zu

elems = driver.find_elements_by_xpath("//table[@id='DataTables_Table_0']/tbody/tr[3]/td/a") 

(Hinweis /a nach /td)

Ein weiterer Tipp: Wenn Sie Variants Taste untersuchen, können Sie sehen, dass es auch eine URL hat: http://cancer.sanger.ac.uk/cosmic/sample/overview?id=2120881#datatab. Sie müssen nur #datatab am Ende hinzufügen.

das gesagt ist Ihre endgültige Skript sollte wie folgt aussehen:

verpflichtet
from selenium import webdriver 

link = 'http://cancer.sanger.ac.uk/cosmic/sample/overview?id=2120881#datatab' 
driver = webdriver.Chrome() 
driver.get(link) 
elems = driver.find_elements_by_xpath(
    "//table[@id='DataTables_Table_0']/tbody/tr[3]/td/a") 
elem = elems[4] 
print(elem.get_property('href')) 
print(elem.get_attribute("href")) 
print(elem.text) 
+0

Much. Eine perfekt strukturierte und gründliche Antwort. –