САЙТОСТРОЙ.РУ

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

Построй свой сайт!

Автоматическая проверка индексации сайта


Далеко не всегда Ваш сайт может оказаться проиндексирован поисковой системой Яндекс. По разным причинам, главная из которых посещаемость роботом-индексатором Яндекса, сайт может оказаться частично проиндексирован. При регулярном пополнении сайта свежими публикациями имеет смысл отслеживать попадание их в выдачу поисковой системы, особенно, если Вы продаете с этих страниц рекламу. Например, неплохой доход может дать биржа ссылок Sape:


Возложить работу по проверке индексированности сайта можно на скрипт, а точнее на систему скриптов, потому что эта работа состоит из нескольких этапов. Мы последовательно разберем, из каких модулей будет состоять эта система. Нам потребуется интепретатор PHP, база данных MySQL и планировщик заданий Cron. Все эти программы Вы найдете у любого более-менее достойного хостера.

Алгоритм работы системы следующий:

  • периодическая проверка через поиск по Яндексу числа проиндексированных страниц сайта $s_domain (в нашем случае saytostroy.ru);
  • занесение этих данных, в случае их новизны, в базу данных;
  • выдача по требованию последних значений иным скриптом.

В этой связи внесем (команда crontab -e) в планировщик заданий Crontab строку, запускающую ежечасную проверку сайта:

0 * * * * php /root/yandex-vydacha/grab.php

Однако заметим, что таккая частота избыточна. Скрипт grab.php самостоятельно проверяет последнюю дату внесения данных и, если с того момента прошло более суток, запрашивает новые данные. Для этого в структуре таблицы MySQL выделено поле текущего времени (в формате Unix, число секунда с начала эпохи).

Листинг файла сбора информации grab.php
<?
  include("mysql.php");
 
  $s_domain="saytostroy.ru";
 
  // текущее время в московском часовом поясе
  $current_time=time();

  // последний апдейт
  $qr=mysql_query("SELECT yv_date FROM sys_yandex_vydacha ORDER BY yv_id DESC LIMIT 1");
  $res=mysql_fetch_array($qr);
  $last_time=$res["yv_date"];
  mysql_free_result($qr);
  unset($res);

  if($current_time-$last_time>60*60*24)
  {
      // прошло более суток с прошлого апдейта, проверить на апдейт;
      // данные внести в любом случае
      
      $code=join("",file("http://www.yandex.ru/yandsearch?text=&stype=www&site=www.${s_domain}&surl_manually=true"));
      if(strlen($code)>2048)
      {
        if(ereg(" ([0-9]+) страниц",$code,$regs))
        {
          $yandex_indexed=$regs[1];
        }
        else
        {
          $yandex_indexed="0";
        }
      }
      else
      {
        $yandex_indexed="0";
      }
      
      mysql_query("INSERT INTO `yandex_vydacha`
                               (`yv_id`, `yv_date`, `yv_yandex`)
                   VALUES (NULL , ${current_time}, ${yandex_indexed})");
    }
    mysql_free_result($qr);
  }

  mysql_close();
?>

Внимание! Безусловно, любая информация в интернете и любой сайт подвержен изменениям. Формат запроса и выдачи данных Яндекса может измениться, поэтому в случае обнуления счетчика страниц в первую очередь проверьте, каков формат выдачи. В нашем случае задано актуальная строка: "любое число страниц", которая присутствует в теге <title>.

Число найденных в Яндексе страниц

Для предотвращения ошибок, скрипт проверяет объем возвращаемой Яндексом страницы. Если она менее 2 Кб, то такая страница не обрабатывается. Столь малый объем может означать, что запрос задан неверно, т.е. изменился его формат. Вы можете настроить скрипт на отправку Вам по почте соответствующего уведомления.

Структура таблицы yandex_vydacha, используемой для записи результатов, такова:

CREATE TABLE IF NOT EXISTS `yandex_vydacha` (
  `yv_id` int(16) NOT NULL auto_increment,
  `yv_date` int(32) NOT NULL,
  `yv_yandex` int(32) NOT NULL,
  KEY `yv_id` (`yv_id`)
) ENGINE=MyISAM AUTO_INCREMENT=1;

Теперь нам надо иметь возможность отображать полученные данные. Мы будем выводить эту информацию за последнюю неделю (не старше 7*24*60*60 секунд), хотя никто не мешает нам отображать и большее число дней. Разумеется, чтобы эти данные имелись, необходимо, чтобы скрипт отработал такое количество дней, успел собрать информацию.

Скрипт отображения проиндексированности сайта yandex.php
<html>
<head>
  <title>Выдача Яндекса</title>
</head>
<body bgcolor="#78B968" link="#144807" vlink="#144807">
<div align="center"><table border="1" cellspacing="0" cellpadding="1">
<tr bgcolor="gray">
  <td>Дата, число страниц.</td>
</tr>
<?
    include("mysql.php");
 
    $current_date=time();
 
    print "<tr><td>";
    
    $qr_vydacha=mysql_query("SELECT yv_date, yv_yandex FROM yandex_vydacha
                              WHERE ${current_date}-yv_date<7*24*60*60 ORDER BY yv_id DESC");
    while($res_vydacha=mysql_fetch_array($qr_vydacha))
    {
      $yv_date=$res_vydacha["yv_date"];
      $yv_yandex=$res_vydacha["yv_yandex"];
      
      print "<b>".date("d.m.y",$yv_date)."</b>: ${yv_yandex}. ";
    }
    
    print "</td></tr> ";
?>
</table></div>
</body>
</html>

Вывод скрипта будет приблизительно следующим:

Результат работы скрипта по отображению индексации сайта


САЙТОСТРОЙ.РУ - практикум создания сайтов для каждого

Просим с уважением относиться к авторам сайта и при копировании документов указывать ссылки на наш сайт.