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元素?