Я использую Selenium для очистки данных чтения службы с веб-сайта Servipag с помощью сценария, который повторяет до 5 раз в случае ошибок. Структура страницы не изменилась, и раньше эта функция работала стабильно. Однако сейчас я испытываю периодические сбои. Несмотря на успешные попытки в прошлом, скрипт часто не может найти элементы или неожиданно истекает время ожидания.
Вот основная структура моей функции:
def scrape_servipag_service_reading(service_type, company, identifier, companyType, propertyId):
max_attempts = 5
for attempt in range(1, max_attempts + 1):
driver = None
try:
# Access the page
driver = Driver(uc=True, headless=True)
driver.get(f"https://portal.servipag.com/paymentexpress/category/{service_type}")
wait = WebDriverWait(driver, 30)
# Select company and enter identifier
select_element = wait.until(EC.presence_of_element_located((By.ID, "card-lib-selectCompany-change")))
Select(select_element).select_by_visible_text(company)
input_element = wait.until(EC.presence_of_element_located((By.ID, "card-lib-identifier-change")))
input_element.send_keys(identifier)
# Click button and wait for results
button_element = wait.until(EC.element_to_be_clickable((By.ID, "card-lib-btnContinue-click")))
button_element.click()
# Fetch results or detect no-debt message
result_elements = wait.until(EC.presence_of_all_elements_located(
(By.CSS_SELECTOR, "div.form-control.border-primary.d-flex.justify-content-end.align-items-center")))
# Processing results here...
except TimeoutException as e:
logger.error(f"TimeoutException on attempt {attempt}: {e}")
except NoSuchElementException as e:
logger.error(f"NoSuchElementException on attempt {attempt}: {e}")
finally:
if driver:
driver.quit()
return None
scrape_servipag_service_reading('agua', 'Aguas Andinas', '2803495-4','agua','asdadsad')
Проблема: несмотря на несколько попыток, сценарий часто терпит неудачу на определенных элементах, таких как card-lib-selectCompany-change и card-lib-identifier-change. Я попытался увеличить время ожидания и убедиться, что структура страницы не изменилась.
Среда:
Драйвер SeleniumBase используется с uc=True, headless=True.
Модуль журналирования Python реализован для отслеживания ошибок.
Эта функция запускается на сервере Windows с стабильный интернет.
Вопросы:
Могут ли быть какие-либо известные проблемы с Selenium или SeleniumBase
, вызывающие периодические сбои в обнаружении элементов?
Существуют ли какие-либо конкретные методы повышения надежности элементов на страницах, загрузка которых иногда занимает больше времени?
Могут ли эти периодические проблемы быть связаны с сервером веб-сайта или временем ответа и есть ли способы справиться с этим такие дела лучше?
Я использую Selenium для очистки данных чтения службы с веб-сайта Servipag с помощью сценария, который повторяет до 5 раз в случае ошибок. Структура страницы не изменилась, и раньше эта функция работала стабильно. Однако сейчас я испытываю периодические сбои. Несмотря на успешные попытки в прошлом, скрипт часто не может найти элементы или неожиданно истекает время ожидания. Вот основная структура моей функции: [code]def scrape_servipag_service_reading(service_type, company, identifier, companyType, propertyId): max_attempts = 5 for attempt in range(1, max_attempts + 1): driver = None try: # Access the page driver = Driver(uc=True, headless=True) driver.get(f"https://portal.servipag.com/paymentexpress/category/{service_type}") wait = WebDriverWait(driver, 30)
# Select company and enter identifier select_element = wait.until(EC.presence_of_element_located((By.ID, "card-lib-selectCompany-change"))) Select(select_element).select_by_visible_text(company) input_element = wait.until(EC.presence_of_element_located((By.ID, "card-lib-identifier-change"))) input_element.send_keys(identifier)
# Click button and wait for results button_element = wait.until(EC.element_to_be_clickable((By.ID, "card-lib-btnContinue-click"))) button_element.click()
except TimeoutException as e: logger.error(f"TimeoutException on attempt {attempt}: {e}")
except NoSuchElementException as e: logger.error(f"NoSuchElementException on attempt {attempt}: {e}")
finally: if driver: driver.quit()
return None
scrape_servipag_service_reading('agua', 'Aguas Andinas', '2803495-4','agua','asdadsad') [/code] Проблема: несмотря на несколько попыток, сценарий часто терпит неудачу на определенных элементах, таких как card-lib-selectCompany-change и card-lib-identifier-change. Я попытался увеличить время ожидания и убедиться, что структура страницы не изменилась. Среда: [list] [*]Драйвер SeleniumBase используется с uc=True, headless=True. [*]Модуль журналирования Python реализован для отслеживания ошибок. [*]Эта функция запускается на сервере Windows с стабильный интернет. [/list] Вопросы: [list] [*]Могут ли быть какие-либо известные проблемы с Selenium или SeleniumBase , вызывающие периодические сбои в обнаружении элементов? [*]Существуют ли какие-либо конкретные методы повышения надежности элементов на страницах, загрузка которых иногда занимает больше времени? [*]Могут ли эти периодические проблемы быть связаны с сервером веб-сайта или временем ответа и есть ли способы справиться с этим такие дела лучше? [/list]