Написал знакомый скрипт парсинга сайта и пропал со связи.
В общем при тесте вываливается такая ошибка
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
Погуглил. Ошибка такая имеет место быть у многих.
Только вот не понял как решение применить.
Как то код надо дополнить чтобы он игнорил эту ошибку.
Вот код
class Google:
dir = os.path.dirname(__file__)
driver = webdriver.Chrome(os.path.join(dir, driver_name))
driver.maximize_window()
time = 0.3
was = []
def level(self, text, element):
if element.text.split('\n')[0] in self.was:
return
else:
self.was.append(element.text.split('\n')[0])
text.append(element.text.split('\n')[0])
try:
element.find_element(By.XPATH, './/ul')
except NoSuchElementException:
with open('text.txt', 'a') as f:
print(element.tag_name, element.text, text)
f.write('/'.join(text)+'\n')
else:
pluses = element.find_elements(By.XPATH, './/*[starts-with(@id,"plus_")]')
for plus in pluses:
try:
plus.click()
time.sleep(self.time)
except ElementNotInteractableException:
continue
except ElementClickInterceptedException:
plus.click()
time.sleep(self.time)
elements = element.find_elements(By.XPATH, './/li')
for el in elements:
# print(el.tag_name, el.text, element.text)
self.level(text, el)
text.pop(-1)
def parse(self, url):
with open('text.txt', 'w') as f:
pass
self.driver.get(url)
text = []
pluses = self.driver.find_elements(By.XPATH, '//*[starts-with(@id,"plus_")]')
for plus in pluses:
plus.click()
time.sleep(self.time)
elements = self.driver.find_elements(By.XPATH, '//li')
for element in elements[7:]:
self.level(text, element)
time.sleep(1)
Подскажите где добавить код рекомендуемый здесь?
https://habr.com/ru/post/573144/