Python 硒:寻找邻近元素

Python 硒:寻找邻近元素,python,css,selenium,xpath,selenium-webdriver,Python,Css,Selenium,Xpath,Selenium Webdriver,首先,我希望这个问题的范围不要太笼统——如果是的话,我道歉 我正在使用Selenium为python2.7构建一个web刮板。在此之前,我使用了“static”xpath将其指向某些元素。我想实现一个可以在上下文中(相对于其他元素)查找元素的解决方案 假设我们希望从该页面上“Issuer:”标签后面的兄弟元素中获取文本:。在这种情况下,相邻文本为“交易所交易概念” 根据我收集的信息,可以使用多种技术,包括相对XPath、CSS或DOM(?) 做这件事的明智方法是什么?如果可能,请用代码演示 当

首先,我希望这个问题的范围不要太笼统——如果是的话,我道歉

我正在使用
Selenium
python2.7
构建一个web刮板。在此之前,我使用了“static”
xpath
将其指向某些元素。我想实现一个可以在上下文中(相对于其他元素)查找元素的解决方案

假设我们希望从该页面上“Issuer:”标签后面的兄弟元素中获取文本:。在这种情况下,相邻文本为“交易所交易概念”

根据我收集的信息,可以使用多种技术,包括相对
XPath
CSS
DOM
(?)

做这件事的明智方法是什么?如果可能,请用代码演示


当前的“静态”XPath,其中使用Firefox标识了XPath:

try:
    xpath_issuer = ".//*[@id='overview']/div/div[2]/div/div[1]/ul[1]/li[1]/span[2]/a"
    find_issuer = driver.find_element_by_xpath(xpath_issuer)
    issuer = re.search(r"(.+)", find_issuer.text).group().encode("utf-8")
    print "Issuer: %s" % issuer
    break
except NoSuchElementException:
    pass

您可以使用以下xpath

//span[@class='minimal-list__title'][text()='Issuer:']//following-sibling::span[@class='minimal-list__value']

我将创建一个可重用函数,通过键获取值:

  • “发行人”的“交易所交易概念”
  • 按“结构”等分类的“ETF”
示例工作实现:

from selenium.common.exceptions import NoSuchElementException

def get_value(driver, key):
    key = key + ":"
    try:
        return driver.find_element_by_xpath("//span[@class='minimal-list__title' and . = '%s']/following-sibling::span" % key).text
    except NoSuchElementException:
        print "Not Found"
        return None
用法:

get_value(driver, "Issuer")

为什么使用更复杂的
xpath
选择器而不是简单的
驱动程序。通过\u id(“概述”)查找\u元素?