如何忽略Selenium中的异常?

时间:2016-06-29 17:43:26

标签: python selenium selenium-webdriver web-scraping web-crawler

我使用 Python Selenium 来抓取网站, 但我的爬虫因为一个例外而停止了:

  

StaleElementReferenceException:消息:陈旧元素引用:元素未附加到页面文档

即使没有附加元素,我怎样才能继续爬行?

更新

我将我的代码更改为:

try:
    libelle1 = prod.find_element_by_css_selector('.em11')
    libelle1produit = libelle1.text  # libelle1 OK
    libelle1produit = libelle1produit.decode('utf-8', 'strict')
except StaleElementReferenceException:
    pass

但我有这个例外

NoSuchElementException: Message: no such element

我也试过这个:

try:
    libelle1 = prod.find_element_by_css_selector('.em11')
    libelle1produit = libelle1.text  # libelle1 OK
    libelle1produit = libelle1produit.decode('utf-8', 'strict')
except :
    pass

3 个答案:

答案 0 :(得分:4)

更具体地说明约翰戈登在谈论什么。处理StaleElementReferenceException常见的selenium异常并忽略它:

.travis.yml

答案 1 :(得分:3)

在产生该错误的代码周围放置一个try-except块。

答案 2 :(得分:1)

看起来浏览器渲染引擎或Javascript引擎正在使用该元素,并且它阻止了此元素上的其他外部操作。您可以在一段时间后尝试访问它。如果持续时间较长,则可以抛出异常。给出了一些很好的例子here