0

Ich benutze Python Selen für eine Website Schaben, aber mein Crawler gestoppt wegen einer Ausnahme:Wie kann ich die Ausnahme in Selen ignorieren?

StaleElementReferenceException: Nachricht: abgestanden Element Referenz: Element ist nicht

auf der Seite Dokument beigefügt

Wie kann ich weiter crawlen, auch wenn das Element nicht angehängt ist?

UPDATE

ich zu meinem Code ändern:

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

, aber ich habe diese Ausnahme

NoSuchElementException: Message: no such element 

ich dieses auch versucht:

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

in Erwägung ziehen, mehr Code zu veröffentlichen, der das Problem verursacht hat. Andernfalls ist die nächstbeste Lösung, die Ausnahme mit dem try-except- oder 'with-supress'-Kontextmanager zu ignorieren – sytech

Antwort

1

Es sieht aus wie der Browser-Rendering-Engine oder Javascript-Engine das Element verwendet, und es blockiert andere externe Operationen auf dieses Element. Sie können versuchen, nach einiger Zeit darauf zuzugreifen. Wenn es für längere Zeit nicht verfügbar ist, kann eine Ausnahme ausgelöst werden. Einige gute Beispiele sind gegeben here.

3

Fügen Sie einen try-except-Block um den Code ein, der diesen Fehler verursacht hat.

3

Um genauer zu sein, worüber John Gordon spricht. Behandeln Sie die StaleElementReferenceException gemeinsame Selen Ausnahme und ignorieren:

from selenium.common.exceptions import StaleElementReferenceException 

try: 
    element.click() 
except StaleElementReferenceException: # ignore this error 
    pass # TODO: consider logging the exception