【发布时间】:2015-10-20 07:39:38
【问题描述】:
首先,我希望这个问题的范围不要太笼统——如果是这样,我深表歉意。
我正在为Python 2.7 使用Selenium 构建一个网络爬虫。以前,我使用“静态”XPaths 将其指向某些元素。我想实现一个可以根据上下文(相对于其他元素)查找元素的解决方案。
假设我们希望从该页面上“Issuer:”标签后面的兄弟元素中获取文本:http://etfdb.com/etf/ROBO/。在这种情况下,相邻的文本是“Exchange Traded Concepts”。
根据我收集到的信息,可以使用多种技术,包括相对 XPath、CSS 或 DOM(?)。
什么是最好的方法来解决这个问题?如果可能,请用代码演示。
当前的“静态”XPath,其中为 Firefox 标识了带有 FirePath 的 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选择器而不是简单的driver.find_element_by_id('overview')?
标签: python css selenium xpath selenium-webdriver