Python 尝试其他XPath,或者继续
我用Selenium拼凑了一个web爬虫,它使用XPath查找元素。在我正在抓取的网页上,根据内容的不同,可能会加载两种布局 如果在错误的布局上运行代码,则会出现错误:Python 尝试其他XPath,或者继续,python,selenium,xpath,try-except,Python,Selenium,Xpath,Try Except,我用Selenium拼凑了一个web爬虫,它使用XPath查找元素。在我正在抓取的网页上,根据内容的不同,可能会加载两种布局 如果在错误的布局上运行代码,则会出现错误:消息:无法定位元素:{“方法”:“xpath”,“选择器”: 如果第一个xpath不存在,我如何创建一个try/(或类似)来尝试另一个xpath,或者如果第一个xpath不存在,或者如果没有,继续下一段代码?我没有Python的经验,所以我无法为您编写示例代码,但您应该创建两个try/catch(或者在本例中为try/except
消息:无法定位元素:{“方法”:“xpath”,“选择器”:
如果第一个xpath不存在,我如何创建一个
try
/(或类似)来尝试另一个xpath,或者如果第一个xpath不存在,或者如果没有,继续下一段代码?我没有Python的经验,所以我无法为您编写示例代码,但您应该创建两个try/catch
(或者在本例中为try/except
)块,您可以使用find_element_by_xpath
)查找元素。之后,捕获NoTouchElementException,您可以使用WebElement
在JAVA中,它看起来像这样:
Boolean isFirstElementExist, isSecondElementExist = true;
WebElement firstElement, secondElement;
try {
firstElement = driver.findElement(By.xpath("first xpath"));
} catch (NoSuchElementException e) {
isFirstElementExist = false;
}
try {
secondElement = driver.findElement(By.xpath("second xpath"));
} catch (NoSuchElementException e) {
isSecondElementExist = false;
}
//... work with the WebElement
以下是简单的解决方案:
try:
element_in_layout_1 = driver.find_element_by_xpath("my_xpath_1")
except:
try:
element_in_layout_2 = driver.find_element_by_xpath("my_xpath_2")
except:
print "No Element was found"
pass
else:
print "Element in Layout 2 was found"
else:
print "Element in Layout 1 was found"
那么,这是Python的核心问题吗?如何编写异常处理代码?您正在寻找一个NoTouchElementException(says)