PHP скрипт сканер+генератор карты сайта

Этот скрипт позволяет отсканировать любой сайт и построить карту сайта. Использует базу mysql и стандартную библиотеку PHP curl. Работает с любыми самыми сложными сайтами. Не работает с сайтами, формирующими страницы на ajax без формирования альтернативной копии для поисковых систем. Но для таких сайтов карта сайта и не нужна, т.к. не существует прямого адреса у страниц. Для всех остальных случаев данный скрипт - идеальное решение для формирования карты сайт.

Здесь приведен пример использования данного класса для кодовой страницы windows-1251 и описание класса.

/sitemap/index.php создает базу, если ее нет, сканирует сайт и строит карту. Может использоваться для полного сканирования сайта и формирования карты. Может выполняться прямым вызовом или по cron(крону) имя_домена/sitemap/

<?
// настройки подключеня к БД
//include_once '/config.php';
define("HostName","localhost");        //  Имя сервера (хост)
define("DBName","db_htmlwebru");        // Имя базы данных
define("UserName","root");    //  Логин
define("Password","");        //  Пароль
@mysql_connect(HostName,UserName,Password);
@mysql_select_db(DBName);
mysql_query("SET NAMES cp1251");

// дальше ничего менять не нужно
include_once 'search.inc.php';
if (!headers_sent()) header('Content-Type: text/html; charset=windows-1251');
@mkdir( dirname(__FILE__) , 0777 );
?>
<html>
<head>
    <title>Генерартор карты сайта</title>
    <meta http-equiv="Content-Type" content="text/html; windows-1251" />
</head>
<body>
<?
// уничтожить таблицы на случай если созданы в другой кодировке
mysql_query('DROP TABLE IF EXISTS `'.$sitemap->page.'`');

// список страниц сайта в виде ссылки, заголовка и анонса (первых 300 символов страницы для вывода в результатах поиска).
/*
   `time` datetime not null,
 time - дата последнего изменения страницы
*/
mysql_query('CREATE TABLE IF NOT EXISTS '.$sitemap->page.' (
   `id` int UNSIGNED NOT NULL PRIMARY KEY auto_increment,
   `url` varchar(255) not null default "" UNIQUE,
   `title` varchar(128) not null default "",
   `description` text not null default ""
    ) DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin');

ignore_user_abort(true);
set_time_limit(100000);
//session_write_close();
$sitemap->error("<br>Начало сканирования ".date('d-m-Y H:m:i')."\n\n",3);
$sitemap->update('',1); // рекурсивно обойти все страницы сайта
$sitemap->error("<br>Окончание сканирования ".date('d-m-Y H:m:i')."\n\n",3);
$result=mysql_query('SELECT count(*) as c from '.$sitemap->page);
$page=($row=mysql_fetch_assoc($result))?$row['c']:0;
$sitemap->error("<br>Всего на сайте <b>".$page."</b> страниц.<br>");

$sitemap->build();
?>
Карта сайта построена !
</body></html>

/sitemap/search.inc.php класс работы с картой сайта

$sitemap = new kdg_sitemap();

/** Сканер сайта и генератор карты сайта в формате XML
* (c) Колесников Дмитрий Геннадьевич
* Лицензированно только на использование
* Запрещена публикация и любое распространение в т.ч. в модифицированном виде.
* Информация на http://htmlweb.ru/php/example/sitemap_generator.php
* Class kdg_sitemap
*/
class kdg_sitemap
{
    var $page = 'sm_kdg_page'; //имя таблицы в БД
    var $root = 'kdg.html-web.ru'; //(isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:'htmlweb.ru'); // на случай запуска по cron
    var $Debug = 2; #  0-работать молча,1-выдавать только ошибки, 2-выдавать ошибки и минимум информации,3-подробное информирование при работе

    // параметры карты сайта по-умолчанию
    var $pr='0.9'; // приоритет
    var $cf="weekly";    // периодичность обновления страницы "еженедеьно"
    // Используйте: "never">Не обновляю, "weekly">Еженедельно, "daily">Ежедневно, "hourly">Каждый час, "monthly">Ежемесячно, "yearly">Ежегодно

    // остальное не трогать
    var $robots = '';
    var $Link_Cache = []; // ссылки, которые были или будут просканированы
    var $url = ''; // сканируемый url
    var $scan = 0;
    var $time='';//time(); // дата последнего обновления страницы

    function __constructor(){}

    /** Вывод сообщений
    * @param string $err - информационное сообщение
    * @param int $deb - тип сообщения 1-ошибка, 2-важное сообщение, 3-неважное сообщение
    */
    function error($err, $deb = 1){}

    /** проверка отсканированна ли данная страница сайта
    * @param string $var
    * @return array|false
    */
    function in_page($var){}

    /** чтение и анализ старницы сайта
    * @param string $url
    * @param int    $scan
    *                 =1 рекурсивно сканировать все страницы сайта, выделить заголовок страницы, тело, описание.
    *                 =2 только одну страницу и её ссылки
    * @param string $body - если передано, то не читать с сайта
    * @return string 'delete'|'no'|'ok'
    */
    function update($url, $scan = 0, $body = ''){}

    /** разбор ссылки, отделение внешних от внутренних
    * @param        $url
    * @param string $base
    * @param int    $ext
    * @return string
    */
    function url_short($url, $base = '', $ext = 0){}

    /** проверка вхождения адреса в robots.txt
    * @param string $url страница для проверки
    * @return bool
    */
    function is_robots($url){}

    /** чтение одной страницы
    * @param $site
    * @return string
    */
    function ReadUrl($site){}

    /** Чтение страниц, парсинг ссылок  и занесение их в БД
    * @param $urls
    * @param $from
    */
    function cacheReadUrl($urls, $from){}

    /**
    * формирование карты сайта на основании информации в БД
    */
    function build(){}
}

readme. - Инструкция по использованию

Распакуйте всё в папку /sitemap на сервере.
измените настройки в начале файлов index.php, search.inc.php
Пропишите путь к карте сайта в robots.txt:
sitemap: /search/sitemap.xml

Запустите имя_домена/sitemap/

вызывайте при добавлении, изменении или удалении каждой страницы
$sitemap->update($_GET['url']);
$url - страница, которую нужно обновить.
удобно вызывать после сохранения изменений страницы
если страница возвращает 404 ошибку или она пустая - она будет удалена из базы.
после обновления страниц переформируйте карту XML-сайта вызвав $sitemap->build();

Для полного пересканирования сайта и формирвоания карты можете выполнять по крону имя_домена/sitemap/

.htaccess - отменяет настройки движка для этой папки

RewriteEngine Off

Скрипт позволяет отсканировать любой сайт и построить карту формата XML для поисковых систем Яндекс, Google. Скрипт полностью открытый и не использует никаких дополнительных библиотек.

А здесь можно построить карту сайта.

Здесь можно купить и скачать скрипт поиска по сайту + генератора карты сайта.

Здесь можно скачать PHP скрипт генератора карты сайта.

Соглашение по использованию:

  • Вы можете использовать полученный код в любых своих разработках, вы не обязаны указывать ссылку на источник.
  • Вы НЕ имеете права перепродавать её, размещать в свободном или ограниченном доступе, а также публиковать в любом виде.
  • Все остальные права сохраняются за автором.
  • Вы можете обратиться к автору с вопросами, замечаниями, пожеланиями. Контакты здесь.


Будьте внимательны!
За 3900 рублей (~43$) Вы можете выбрать один из двух вариантов скрипта, которые существенно отличаются друг от друга.

Вы можете войти или зарегистрироваться! Или без регистрации
При нажатии кнопки загрузить, Вы подтверждаете согласие с условиями использования скрипта, описанными на этой странице.
С Вашего баланса будет списана сумма в 3900 рублей (~43$) и начнется загрузка файла.
     
Сомневаетесь? Вы всегда сможете задать вопросы и получить помощь.


.