【问题标题】:Trouble with Selenium property extraction in PythonPython中的Selenium属性提取问题
【发布时间】:2017-07-03 16:25:30
【问题描述】:

我正在尝试从带有 Selenium 的页面获取链接。代码如下:

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)

为什么获取href时结果为None?如何获取此链接?

提前致谢!

【问题讨论】:

    标签: python selenium


    【解决方案1】:

    您的脚本运行良好。问题出在您的xpath 中。如果你想要a 元素,你需要找到它们而不是外部td。改变

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

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

    (注意/a/td之后)

    另一个提示: 如果您检查Variants 按钮,您会看到它还有一个url:http://cancer.sanger.ac.uk/cosmic/sample/overview?id=2120881#datatab。您只需要在末尾添加#datatab

    话虽如此,您的最终脚本应该如下所示:

    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)
    

    【讨论】:

    • 非常感谢。一个结构完美且彻底的答案。
    猜你喜欢
    • 2017-06-07
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    相关资源
    最近更新 更多