Находим битые ссылки с 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, мы попытались решить одну из задач оптимизации сайта в поисковике.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.