Предлагаем вашему вниманию скрипт, который собирает данные с заданного сайта,
а именно: внутренние и внешние ссылки, и мета тэги — 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, которая показывает диалог с настройками. Для постройки этого диалога функция использует xml файл. Таким образом изменяя xml файл можно создать любой диалог. В результате своей работы функция возвращает строку с настройками. Мы эту строку разбираем и получаем настройки, которые ввёл пользователь в диалог.
В нашем случае пользователь вводит анализируемый сайт, папку куда складывать результаты, задаёт что именно собирать и фильтры какие страницы не обрабатывать.
Пример XML файла нашего диалога настроек:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<freeDlg x="120" y="180" width="300" height="300" value="Настройки для анализа сайта" x_ok="140" y_ok="245" x_cancel="215" y_cancel="245"> <LABEL x="5" y="17" width="100" height="20" value="Сайт для анализа:" ></LABEL> <EDIT x="120" y="10" width="170" height="20" value="http://Введите адрес сайта" ></EDIT> <LABEL x="5" y="47" width="130" height="20" value="Путь к результатам:" ></LABEL> <EDIT x="120" y="40" width="170" height="20" value="./res/" ></EDIT> <LABEL x="5" y="75" width="200" height="20" value="Собирать:" ></LABEL> <CHECKBOX x="5" y="100" width="200" height="20" value="Внешние ссылки" ></CHECKBOX> <CHECKBOX x="5" y="125" width="200" height="20" value="Внутренние ссылки" ></CHECKBOX> <CHECKBOX x="5" y="150" width="200" height="20" value="Мета тэги (title, description, keyword)"></CHECKBOX> <LABEL x="5" y="185" width="290" height="20" value="Фильтры на поиск (вводить через ,): " ></LABEL> <EDIT x="5" y="210" width="285" height="20" value="/download/,/forum/,/gallery/,/images/,.jpg,.rar,.png,.js" ></EDIT> </freeDlg> |
Вызов диалога настроек в скрипте:
1 2 3 4 5 6 7 8 9 10 11 |
// покажем диалог настроек скрипта $str_settings=$app->show_free_dlg(file_get_contents("settings.xml"),"false","<br>"); // добавим главную страницу в массив $obj_settings=new ScriptSettings(); if(!$obj_settings->set(trim($str_settings))) { debug_mess("<b>не заданы настройки скрипта!</b>"); debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу<br>"); $app->quit(); } |
Для обработки вводимых пользователем настроек мы добавили специальный класс ScriptSettings:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
<?php // ссылка на страницу и информация по ней class ScriptSettings { // страница var $str_site; // папка с результатами var $str_res_folder; // собирать внешние ссылки var $b_ext_links; // собирать внутренние ссылки var $b_inn_links; // собирать мета тэги var $b_meta_tags; // массив фильтров var $a_filters; // задать настройки function set($str_sets) { if($str_sets=="Cancel") return false; // преобразуем в массив $a_sets=explode("<br>",$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<br>"; // путь к папке с результатами echo "путь к папке с результатами: $this->str_res_folder<br>"; // собирать ли внешние ссылки if($this->b_ext_links) echo "собирать внешние ссылки<br>"; // собирать ли внутренние ссылки if($this->b_inn_links) echo "собирать внутренние ссылки<br>"; // собирать ли тэги if($this->b_meta_tags) echo "собирать тэги<br>"; // разобрать фильтры в массив echo " фильтры: <br>"; for($ii=0;$ii<count($this->a_filters);$ii++) echo $this->a_filters[$ii]."<br>"; return true; } } ?> |
Скрипт можно легко модифицировать под сбор любой нужной вам информации, например можно собирать email-ы, телефоны, факсы, адреса, цены и т.д.
Можно сделать что б он брал сайты из заданного файла или собирал эти сайты по ключевому
запросу из поисковых результатов гуль или яндекс или любой другой поисковой машины.
Сам скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
<?php /* ** // Наш сайт http://x-scripts.com // Скрипт сбора информации о сайте. // по любым вопросам касающимся скрипта // можно написать нам на мыло order@x-scripts.com ** */ $xhe_host ="127.0.0.1:7010"; // The following code is required to properly run XWeb Human Emulator require("../../Templates/xweb_human_emulator.php"); // ////////// настройки скрипта/////////////////// // режим отладки $dbg=true; // /////////////////// дополнительные модули ///////////////////// // настройки require_once("settings.php"); // функции require_once("functions.php"); // ///////////////////// script ///////////////////////////////////////////////////////// debug_mess(date("\[ m.d.y H:i:s\] ")." скрипт запустили"); // покажем диалог настроек скрипта $str_settings=$app->show_free_dlg(file_get_contents("settings.xml"),"false","<br>"); // добавим главную страницу в массив $obj_settings=new ScriptSettings(); if(!$obj_settings->set(trim($str_settings))) { debug_mess("<b>не заданы настройки скрипта!</b>"); debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу<br>"); $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;$k<count($a_links);$k++) { // получаем страницу $pg=$a_links[$k]; // проверяем фильтры if(!check_filter($pg, $obj_settings)) continue; // переходим на страницу $browser->navigate($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("<br>",$hrefs); // пройтись по всем hrefs и удалим лишнее for($ii=0; $ii<count($hrefs); $ii++) { // получить ссылку $pg_href=trim($hrefs[$ii]); // проверяем внешняя ли ссылка if(strpos($pg_href,$obj_settings->str_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\] ")." скрипт закончил работу<br>"); // Quit $app->quit(); ?> |
Скрипт написан 07.09.2012 в Human Emulator 4.4.19 Advanced.
На момент публикации статьи 10.09.2012 скрипт был рабочий.
Этот скрипт работает в Demo версии программы Human Emulator. Посмотреть все скрипты для Demo и Скачать Demo