Предлагаем вашему вниманию скрипт, который собирает данные с заданного сайта,
а именно: внутренние и внешние ссылки, и мета тэги — title, description и keywords.
В результате работы скрипта по заданному пути появляются csv файлы: inner_links.csv с внутренними ссылками,
ext_links.csv с внешними и meta_tags.csv с мета тэгами.
Формат csv файлов с ссылками:
url страницы;ссылка
http://x-scripts.com/;http://www.freecsstemplates.org/
http://x-scripts.com/;http://www.humanemulator.info/
http://x-scripts.com/;mailto:order@x-scripts.com
Формат csv файла с meta tags:
url страницы;заголовок страницы;meta tag description; meta tag keywords
http://x-scripts.com/index.php;X-Scripts всё про скрипты XHE и их применение | X-Scripts.com;Описание сайта и разделов представленных на X-Scripts.com;XHE скрипты, написание скриптов XHE, примеры скриптов под хуман, примеры скриптов, скрипты для XWeb Human Emulator бесплатно
http://x-scripts.com/scripts.php;Примеры скриптов для XHE | X-Scripts.com; Примеры скриптов для XHE на X-Scripts.com. Скачай себе скрипт для Xweb Human Emulator;примеры скриптов скачать, скачать скрипты, скрипты xhe скачать, примеры xhe скачать
http://x-scripts.com/scripts/catalogs.php;Скрипт XHE сборщик каталогов | X-Scripts.com;Скрипт XHE сборщик каталогов на .com.

мы использовали функцию $app->show_free_dlg, которая показывает диалог с настройками
На этот раз для настроек скрипта мы использовали функцию $app->show_free_dlg, которая показывает диалог с настройками. Для постройки этого диалога функция использует xml файл. Таким образом изменяя xml файл можно создать любой диалог. В результате своей работы функция возвращает строку с настройками. Мы эту строку разбираем и получаем настройки, которые ввёл пользователь в диалог.
В нашем случае пользователь вводит анализируемый сайт, папку куда складывать результаты, задаёт что именно собирать и фильтры какие страницы не обрабатывать.
Пример XML файла нашего диалога настроек:
Вызов диалога настроек в скрипте:
// покажем диалог настроек скрипта
$str_settings=$app->show_free_dlg(file_get_contents("settings.xml"),"false","
");
// добавим главную страницу в массив
$obj_settings=new ScriptSettings();
if(!$obj_settings->set(trim($str_settings)))
{
debug_mess("не заданы настройки скрипта!");
debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу
");
$app->quit();
}
Для обработки вводимых пользователем настроек мы добавили специальный класс ScriptSettings:
",$str_sets);
// сайт
$this->str_site = trim($a_sets[0]);
// путь к папке с результатами
$this->str_res_folder = trim($a_sets[1]);
// собирать ли внешние ссылки
$this->b_ext_links =trim($a_sets[2])==1;
// собирать ли внутренние ссылки
$this->b_inn_links = trim($a_sets[3])==1;
// собирать ли тэги
$this->b_meta_tags = trim($a_sets[4])==1;
// разобрать фильтры в массив
if($a_sets[5]!="")
$this->a_filters=explode(",",$a_sets[5]);
else
$this->a_filters="";
return true;
}
// показать настройки в панели отладки
function show()
{
// сайт
echo "анализируем сайт : $this->str_site
";
// путь к папке с результатами
echo "путь к папке с результатами: $this->str_res_folder
";
// собирать ли внешние ссылки
if($this->b_ext_links)
echo "собирать внешние ссылки
";
// собирать ли внутренние ссылки
if($this->b_inn_links)
echo "собирать внутренние ссылки
";
// собирать ли тэги
if($this->b_meta_tags)
echo "собирать тэги
";
// разобрать фильтры в массив
echo " фильтры:
";
for($ii=0;$iia_filters);$ii++)
echo $this->a_filters[$ii]."
";
return true;
}
}
?>
Скрипт можно легко модифицировать под сбор любой нужной вам информации, например можно собирать email-ы, телефоны, факсы, адреса, цены и т.д.
Можно сделать что б он брал сайты из заданного файла или собирал эти сайты по ключевому
запросу из поисковых результатов гуль или яндекс или любой другой поисковой машины.
Сам скрипт:
show_free_dlg(file_get_contents("settings.xml"),"false","
");
// добавим главную страницу в массив
$obj_settings=new ScriptSettings();
if(!$obj_settings->set(trim($str_settings)))
{
debug_mess("не заданы настройки скрипта!");
debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу
");
$app->quit();
}
// покажем настройки в окне отладки
//$obj_settings->show();
// чистим предыдущие данные
if($obj_settings->b_ext_links)
$file_os->delete($obj_settings->str_res_folder."ext_links.csv");
if($obj_settings->b_inn_links)
$file_os->delete($obj_settings->str_res_folder."inner_links.csv");
if($obj_settings->b_meta_tags)
$file_os->delete($obj_settings->str_res_folder."meta_tags.csv");
// добавим главную в массив
$a_links[]=$obj_settings->str_site;
// чистим данные
// собираем и проверяем
for($k=0;$knavigate($pg);
// проверяем страницы которые не нужно обрабатывать
// проверить 404 страницу
$bd=$webpage->get_body();
if(strpos($bd,"Error 404:"))
continue;
// проверить index of
if(strpos($bd,"Index of "))
continue;
// получить meta tags текущей страницы
if($obj_settings->b_meta_tags)
get_meta($pg,$obj_settings);
// получим все href-ы на странице
$hrefs=$anchor->get_all_hrefs();
// преобразуем в массив
$hrefs=explode("
",$hrefs);
// пройтись по всем hrefs и удалим лишнее
for($ii=0; $iistr_site)===false && $obj_settings->b_ext_links)
{
$textfile->add_string_to_file($obj_settings->str_res_folder."ext_links.csv",$pg.";".$pg_href."\n",60) ;
}
else if($obj_settings->b_inn_links) // внутренняя ссылка
{
// если ещё не проверяли проверим
// добавим проверяемую страницу
if(!is_a_exists($pg_href))
{
$a_links[]=$pg_href;
$textfile->add_string_to_file($obj_settings->str_res_folder."inner_links.csv",$pg.";".$pg_href."\n",60) ;
}
}
}
}
// убираем дубликаты из файлов
if($obj_settings->b_ext_links)
$textfile->dedupe($obj_settings->str_res_folder."ext_links.csv",$obj_settings->str_res_folder."ext_links.csv",60);
if($obj_settings->b_inn_links)
$textfile->dedupe($obj_settings->str_res_folder."inner_links.csv",$obj_settings->str_res_folder."inner_links.csv",60);
if($obj_settings->b_meta_tags)
$textfile->dedupe($obj_settings->str_res_folder."meta_tags.csv",$obj_settings->str_res_folder."meta_tags.csv",60);
debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу
");
// Quit
$app->quit();
?>
Скрипт написан 07.09.2012 в Human Emulator 4.4.19 Advanced.
На момент публикации статьи 10.09.2012 скрипт был рабочий.
Этот скрипт работает в Demo версии программы Human Emulator. Посмотреть все скрипты для Demo и Скачать Demo