Интернет-решения от доктора Боба


Детектор мертвых ссылок


Любой серьезный web сайт и его web мастер должны всегда следить за актуальность ссылок. И если обнаружится мертвая ссылка (например другой web сайт прекратил существование), но нет никаких оправданий для внутренних мертвых ссылок. И поэтому я написал простую программу, назвав ее HTMLINKS, которая может сканировать .HTM файлы на их присутствие на локальной машине. (что бы потом загрузить их на сервер). HTM файлы из текущего каталога и всех подкаталогов рекурсивно читаются и проверяются на тег "<A HREF=" или "<FRAME SRC=". Если страница локальная, то есть без префикса "http://", то файл открывается с использованием относительно пути. Если страница не находится, то мы имеем внутреннюю мертвую ссылку, которая должна быть исправлена!!

Заметим, что программа игнорирует все "file://", "ftp://", "mailto:", "news:" and ".exe?" значения если они встретятся внутри "HREF" части. Конечно, вы свободны в расширить HTMLINKS для проверки и этих случаев, можно также реализовать проверку и внешних ссылок. Для информации я написал и детектор внешних мертвых ссылок в статье для The Delphi Magazine, подробности можно найти на моем web сайте. Для анализа мертвых локальных ссылок код следующий:

  {$APPTYPE CONSOLE}

  {$I-,H+}

  uses

    SysUtils;

  var

    Path: String;

    procedure

CheckHTML(const Path: String);

    var

      SRec: TSearchRec;

      Str: String;

      f: Text;

    begin

      if

FindFirst('*.htm', faArchive, SRec) = 0 then

      repeat

        Assign(f,SRec.Name);

        Reset(f);

        if

IOResult = 0 then { no error }

        while

not eof(f) do

        begin

          readln(f,Str);

          while

(Pos('<A HREF="',Str)  0) or

                (Pos('FRAME SRC="',Str)  0) do

          begin

            if

Pos('<A HREF="',Str)  0 then

              Delete(Str,1,Pos('HREF="',Str)+8-3)

            else

              Delete(Str,1,Pos('FRAME SRC="',Str)+10);




Начало  Назад  Вперед



Книжный магазин