【发布时间】:2015-08-19 10:27:10
【问题描述】:
我正在使用try/except 来检查xpath 从网站输入变量的替代来源。
它必须多次这样做,所以我正在寻找一种缩短表达式的方法。也许可以以某种方式使用上下文管理器?
在此示例中,我正在检查变量 issuer 和 name 的两个替代 xpath 源。
try:
xpath_issuer = ".//*[@id='dv_PRE88f496c28ad6488895f1ffc383fae8bd_list_list']/div/div[3]/table/tbody/tr[2]/td[2]"
find_issuer = driver.find_element_by_xpath(xpath_issuer)
issuer = re.search(r"(.+)", find_issuer.text).group()
except NoSuchElementException:
pass
try:
xpath_issuer = ".//*[@id='dv_PRE00e883469a264528b20fbbc31b0da4a2_list_list']/div/div[3]/table/tbody/tr[1]/td[2]/a"
find_issuer = driver.find_element_by_xpath(xpath_issuer)
issuer = re.search(r"(.+)", find_issuer.text).group()
except NoSuchElementException:
pass
try:
xpath_name = ".//*[@id='cols']/div[1]/div[1]/h1"
find_name = driver.find_element_by_xpath(xpath_name)
name = re.search(r"(.+)", find_name.text).group()
except NoSuchElementException:
pass
【问题讨论】:
-
定义一个接受 XPath 表达式并包含 try/except 代码的函数,如 stackoverflow.com/a/12150013/423105 所示。发生 NoSuchElementException 时让它返回 None 。使用三个不同的 XPath 表达式调用该函数三次……但如果函数返回的结果不是 None,则停止。
标签: python-2.7 xpath exception-handling contextmanager