Находим битые ссылки с Selenium в Python

Находим битые ссылки с Selenium в Python

Находим битые ссылки с Selenium в Python

Здравствуйте! В сегодняшней статье мы поговорим про битые ссылки. Что же это такое. Итак, представим себе
ситуацию при которой мы сняли гостиницу и при прибытии к месту, оказывается что это пустырь. Примерно также
может почувствовать себя пользователь при встрече с битыми ссылками. Т.е. наличие подобных ошибок влияет на
восприятие данного сайта и ухудшает UE — пользовательский опыт, а также сказывается на SEO.
В связи с чем возникает необходимость проверки сайта на наличие подобных ошибок. Конечно, ничто не мешает
сделать это вручную, но что если сайт многостраничный и ссылки на нем трудно подсчитать. Что часто встречается в интернет
магазинах.
Для решения подобных задач существуют готовые инструменты от Google и Yandex. При этом многие из них платны и
имеют ограничения.
Мы же попробуем решить данную задачу с помощью Selenium webdriver и Python. И как мы уже знаем, Selenium — это
веб-инструмент автоматизации с открытым исходным кодом, позволяющий автоматизировать действия пользователя в браузере.
Для решения задачи нахождения битых ссылок нам понадобится совершить ряд последовательных шагов.

Необходимые шаги:
Найти все ссылки, присутствующие на веб-странице.Отправить HTTP-запрос на каждую ссылку и получите ее код
состояния.На основе кода состояния мы решим, сломана ссылка или нет.

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# импорт модуля для отправки запросов по адресам ссылок
import requests

# укажим место хранения драйвера
PATH=r"C:/path_to/chromedriver.exe"

# создадим  экземпляр драйвера
my_driver = webdriver.Chrome(PATH)

# пропишем адрес сайта
my_driver.get("https://myrusakov.ru/python-tutorial.html")

# получим список ссылок из страницы сайта
all_links = my_driver.find_elements(By.CSS_SELECTOR,"a")

# проверим список на наличие битых ссылок
for link in all_links:
    # выделение url ссылки из аттрибута href
    url = link.get_attribute('href')

    # послаем запрос по указанному url  и получаем ответ
    result = requests.head(url)

    # если статус кода ответа не равен 200 выводим ссылку на экран (приспособьте условие под свои потребности)
    if result.status_code != 200:
      print(url, result.status_code)

Следует иметь ввиду, что подход основанный на статусе ответов может зависеть от текущего состояния соединения
или сервера.
Таким образом, при помощи Python и Selenium webdriver, мы попытались решить одну из задач оптимизации сайта в поисковике.

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий