Как найти поврежденные ссылки в Selenium WebDriver?

🔹 Алгоритм поиска битых ссылок

  1. Получить все элементы <a> (ссылки) на странице:

    links = driver.find_elements("tag name", "a")
  2. Для каждой ссылки достать атрибут href.

  3. Проверить, что ссылка не пуста и начинается с http/https.

  4. Отправить HTTP-запрос к этому URL (обычно методом HEAD или GET).

  5. Проверить HTTP статус код ответа:

    • 200 OK → ссылка рабочая

    • 404, 500, 403 и др. → ссылка повреждённая

from selenium import webdriver
import requests

driver = webdriver.Chrome()
driver.get("https://example.com")

# Находим все ссылки <a>
links = driver.find_elements("tag name", "a")

for link in links:
    url = link.get_attribute("href")

    if not url:  # пустая или None
        print("❌ Пустая ссылка")
        continue

    try:
        # HEAD быстрее, чем GET (не загружает тело ответа)
        response = requests.head(url, allow_redirects=True, timeout=5)
        if response.status_code >= 400:
            print(f"❌ Битая ссылка: {url} | Код: {response.status_code}")
        else:
            print(f"✅ Рабочая ссылка: {url} | Код: {response.status_code}")
    except requests.exceptions.RequestException as e:
        print(f"⚠ Ошибка при проверке {url}: {e}")

driver.quit()

📌 Советы:

  • Используй requests.head() → быстрее, чем get().

  • Добавляй timeout (иначе тест может зависнуть).

  • Лучше собирать и <a> и <img>, потому что битая картинка → тоже ошибка.

Last updated

Was this helpful?