Рубрики
Без рубрики

Найти ссылки на 404 страницы

Как я написал WebCraWler, чтобы найти 404 ошибок. Теги с WebDev, Python, учебником.

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

Разработчики автоматизируют все. Если мы видим почти итеративную задачу, мы пишем программу для нее. Есть конечно случаи, когда это отличный способ прокладывать, но для этой конкретной проблемы нет разумной альтернативы автоматизации.

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

Конечно, вы можете создать CMS, который автоматически наблюдает за ссылками на 404 страницы, но это кажется сложным и, вероятно, вычислительно интенсивно. Но если вы знаете о такой интегральной системе, это было бы здорово, чтобы дать мне знать.

Первая наивная идея состояла в том, чтобы просматривать базу данных статьи и сканировать ее для -Tags. Тогда вы бы искали в вашей базе данных и посмотрите, если есть статья для этого URL. Ограничения и проблемы этого подхода очевидны: вам необходимо получить доступ к вашей базе данных, что означает, что, вероятно, загружают его и устанавливают его таким образом, чтобы ваш код доступа к нему. Внешние ссылки нуждаются в дополнительной лечении.

В зависимости от ваших CMS, вероятно, что существуют разные URL для одной статьи. Следовательно, вам нужно несколько регулярных выражений (или любую технику, которую вы используете) для лечения этих разных случаев. Отличным примером этой проблемы является Joomla: если вы получите доступ к статье через Menubar, у него есть URL https://joomla-domain.com/index.php/menu-item-x/article-title. иначе это https://joomla-domain.com/index.php/article-title . Если вы хотите извлечь извлечение на заголовок статьи/- это может потребоваться дифференцировать между такими разными URL-адресами. Вам понадобится пользовательская реализация для каждого разных CMS. Следовательно, я решил пойти еще один маршрут (каламбур): Создание веб-скамера.

Принципиально интуитивно, эта концепция немного проще, чем ползание через вашу базу данных. В качестве дополнительного, это отличный пример теории графа. Вы выбираете отправную точку/начальный URL; Затем гусенику посещает эту страницу и ищет все ссылки там и помнит их. Затем он посещает все эти связанные сайты и снова выглядит для всех ссылок на них. Этот процесс затем повторяется до тех пор, пока все страницы не будут посещены. В конце концов у вас есть график всего вашего веб-сайта, и если посещенный сайт вернул код HTTP 404, вы можете отметить этот URL в дополнительный список вместе с сайтом, на котором включена ссылка. Не совсем, ракетная наука, верно?

Как всегда, есть, конечно, некоторые потенциальные подводные камни, вы должны рассмотреть при создании такого алгоритма:

  • Ссылки в -Таги часто являются абсолютными URL-адресами в формате/основной категории/другой слой/посадочная страница, чтобы сделать ваш гусеничный посетить этот сайт, вам нужно будет добавить домен, чтобы создать этот формат: https://tld.com/main-category/another-layer/landing-page Отказ
  • Веб-сайт, вероятно, имеет ссылки на внешние сайты. Вы не хотите, чтобы они не хотели, поэтому вам нужно дифференцировать между вашим веб-сайтом интересов и внешних ссылок, но, конечно, имеет смысл проверить, существует ли внешний веб-сайт! Может быть, это было бы полезно игнорировать некоторые пути URL-адреса, я. е. Некоторые календарные модули используют сценарии PHP, которые разбирают URL-адреса для возврата событий (joomla снова:(). Это может генерировать тысячи URL-адресов, которые вы проанализируете, если вы не игнорируете их.
  • Скорее всего, вы столкнетесь в петли. Страница посадки Ссылки на посадочную страницу B и наоборот. Если ваш алгоритм не помнит, какую страницу уже посетили, поздравляю: вы построили бесконечный цикл.
  • Строки меню – дьявол. У вас будет намного больше операций, если вы посмотрите на них на каждой странице. То же самое с боковыми и нижними колонтитулами. Следовательно, может быть полезно игнорировать определенные элементы HTML по классу или идентификатору.
  • Некоторые серверы имеют ограничения для того, сколько доступа в минуту они позволяют. Даже если нет, это хорошая практика, чтобы быть вежливым, что означает ожидание между запросами на так много секунд.

Вы, вероятно, уже заметили, но многие из этих проблем уже решаются в теории графика, поэтому это может быть прекрасное время, чтобы освежить свои знания по этой теме.

Если вы не хотите создавать такую программу самостоятельно, вам повезло: есть несколько бесплатных онлайн-инструментов, которые могут найти ссылки на не существующие страницы. Даже лучше: я сделал свою собственную реализацию публичными несколько недель назад. Он имеет решения для всех упомянутых проблем и уже помог мне найти несколько десятков ссылок на не существующие страницы на веб-сайте клиента. Кроме того, он экспортирует результаты в качестве файла CSV, поэтому вы можете открыть его в Excel или на любой приложении, которую вы предпочитаете и просматривайте данные. Это легко добраться через командную строку и написана в Python. Вы можете найти это здесь: https://github.com/bahe007/tt404

Довольно часто мне трудно получить ногой в дверь, если я начну совершенно новый проект, поэтому вот две отличные библиотеки для реализации в Python, чтобы сделать первый шаг немного легче для вас:

  • Красивый суп: удивительный HTML-парсер. Невероятная работа без которой проект будет предпринять гораздо дольше.
  • Запросы: Это базовая библиотека Python для HTTP-запросов. Я настоятельно рекомендую это, когда я успешно использовал его в нескольких проектах, хотя некоторые люди предпочитают Урлыб.

Не стесняйтесь оставить отзыв или ссылку на свой собственный проект, я оценил оба. Спасибо за прочтение!

Оригинал: “https://dev.to/bahe007/finding-links-to-404-pages-44ic”