ElementClickInterceptedException для https://health.usnews.com/doctors/; Не нажимая кнопкуPython

Программы на Python
Гость
ElementClickInterceptedException для https://health.usnews.com/doctors/; Не нажимая кнопку

Сообщение Гость »


Поэтому я пытаюсь получить данные href из профилей врачей на странице https://health.usnews.com/doctors/new-jersey. Мой код использует Selenium для размещения веб-сервера для доступа к веб-сайту и анализа URL-адресов, выполняя тяжелую работу по очистке веб-страниц. Мой код успешно извлекает данные и помещает их в набор, чтобы избежать дублирования, но не может перейти на следующую страницу. Когда программа запускается, она либо зацикливается, либо полностью закрывается. Вот скриншот веб-сайта, когда он пытается нажать кнопку и терпит неудачу. В описании указаны возможные ошибки, из-за которых это происходит:

[10620:16572:0228/204556.116:ОШИБКА:device_event_log_impl.cc(192)] [20:45:56.116] USB: usb_service_win.cc:105 SetupDiGetDeviceProperty({{A45C254E-DF1C-4EFD-8020-67D146A85 0E0}, 6}) не удалось: элемент не найден. (0x490) [11692:2400:0228/204600.897:ОШИБКА:ssl_client_socket_impl.cc(970)] не удалось установить соединение; возвращено -1, код ошибки SSL 1, net_error -202

Я получаю исключение ElementClickInterceptedException следующего содержания:

ElementClickInterceptedException: Сообщение: щелчок по элементу перехвачен: Элемент не доступен для клика в точке (456, 865). Другой элемент получит щелчок: (Информация о сеансе: chrome=122.0.6261.70) Вот мой участок кода, который решает эти проблемы (вероятно, он довольно беспорядочный, поскольку я впервые использую Selenium!):

def getPageHLinks(url, count, tempSet, driver): junkLinks = ['https://www.usnews.com/features/info/pr ... ate-notice', «https://www.usnews.com/features/info/privacy» ] пытаться: # Извлекаем HTML-код страницы Doctors_HLinks_Set = tempSet # Поместите hrefs в набор для удаления дубликатов Doctors_HLinks = driver.find_elements(By.XPATH, "//a[@class='Anchor-byh49a-0 eMEqFO']") для врачей_HLink в докторах_HLinks: if Doctor_HLink в junkLinks: # Пункт об удалении бесполезной ссылки продолжать Doctors_HLinks_Set.add(doctors_HLink.get_attribute('href')) печать (doctors_HLinks_Set) if count != 51: # Автоматизация итерации страницы, начинается со страницы 2 ожидание = WebDriverWait (драйвер, 10) пытаться: button = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@title = 'Следующая страница' и @class= 'page-numbers__Button-sc-138ov1k-4 page-numbers__NextButton-sc-138ov1k-6 biGwcb hoTHNb']"))) ActionChains(драйвер).move_to_element(кнопка).perform() время.сон(5) button.click() # Нажмите кнопку считать += 1 вернуть getPageHLinks(url, count, Doctor_HLinks_Set, драйвер) кроме ElementClickInterceptedException как e: print(f"ElementClickInterceptedException: {e}") драйвер.выйти() вернуть докторов_HLinks_Set else: # Достигнута страница 50, поиск завершен, поэтому выведите данные драйвер.выйти() вернуть докторов_HLinks_Set кроме NoSuchWindowException как e: print(f"Такого окна нет: {e}") драйвер.выйти() вернуть tempSet Я попробовал несколько решений этой проблемы:
[*]Добавление таймера ожидания, чтобы узнать, истечет ли время показа рекламы (не сработало) [*]Добавление расширения для блокировки рекламы в chromedriver для удаления рекламы (это не сработало, iframe с рекламой все равно всплывал) [*]использовал команду ActionChain для прокрутки вниз страницы и нажатия кнопки (кнопка не генерируется динамически, поэтому проблема не в этом)
Похоже, ничего не помогло.

Изменить: Вот ошибки, которые я обнаружил при доступе к HTML-консоли на веб-сайте: Изображение здесь

Вернуться в «Python»