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