Находим битые ссылки с 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, мы попытались решить одну из задач оптимизации сайта в поисковике.

Источник

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

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