Один из методов раскрутки сайта это добавление ссылки на него в каталоги. Хотя по этому поводу в интернете можно найти разные мнения, кто-то считает, что этот метод уже не работает и годится только для улучшения индексации, кто-то думает, что с помощью него можно получить целевой трафик и поднять сайт в выдаче.
Мы предлагаем вашему вниманию скрипт сборщик каталогов. Скрипт с помощью поисковой системы Google собирает в файл ссылки на каталоги. Принцип определения каталога это наличие на странице рабочей ссылки «Добавить сайт» или «добавить сайт». Если переход по ссылке совершен, значит это каталог. Так же в скрипт добавлены возможность определять есть ли в каталоге заданные темы и просит ли каталог ввести каптчу или нет. Если в каталоге нету заданной темы или он просит ввести каптчу, каталог не пишется в файл.
Теперь рассмотрим детальнее сам скрипт.
1. Настройки скрипта:
1 2 |
// ключи для поиска каталогов $keys = file("./data/keys.txt"); |
В файле keys.txt содержатся поисковые запросы, которые мы вбиваем в Google для поиска каталогов. Формат файла:
каталог сайтов
добавить сайт
автокаталог
1 2 |
// для проверки тематики каталога $themas = file("./data/themas.txt"); |
В файле themas.txt лежит список тем, на которые мы проверяем каталоги. Формат файла:
авто
спорт
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// файл с результатами $res_catalogs = "./res/catalogs.txt"; Файл, в который пишутся каталоги. // проверять ли тематику $b_check_themas = false; - задаём проверять ли тематику. // проверяем есть ли каптча $b_check_captcha = false; - задаём проверять ли наличие каптчи // глубина прохода в поисковые результаты $cnt_pages = 15; - сколько страниц с поисковыми результатами для каждого запроса должен обработать скрипт. // режим отладки $dbg=true; - вывод в панель отладки логов скрипта. |
2. Дополнительные модули:
1 2 |
// основные функции require_once("functions.php"); - тут мы подключаем дополнительные функции для работы скрипта. Функции находятся в файле functions.php, который лежит в папке со скриптом. |
3. Скрипт:
1 2 |
// задать время ожидания загрузки $browser->set_wait_params(10,1); |
Это нововведение с версии 4.4.10. Теперь не надо вызывать функцию $browser->wait_for(); после каждого клика или перехода страницы. Достаточно один раз задать в начале скрипта с помощью этой функции. Параметры в функцию передаются аналогично wait_for.описание функции wait_for
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// стартовый индекс для поисковых запросов $aa_st=0; if (isset($argv[1])) $aa_st = $argv[1]; // стартовый индекс ссылки на странице $ii_st=0; if (isset($argv[2])) $ii_st = $argv[2]; // индикатор текущей поисковой страницы $crnt_page =1; if (isset($argv[3])) $crnt_page = $argv[3]; |
Эти три строчки используется при рестарте скрипта. Так как в IE имеются утечки при работе с некоторыми сайтами, то эти утечки унаследовал и Хуман, который основан на компоненте IE. Поэтому приходится при интенсивной работе скрипта с сайтами делать рестарт программы для обнуления памяти.
1 |
debug_mes("<b>запустили для ключего слова с индексом $aa_st <br>для поисковой страницы $crnt_page <br> для ссылки $ii_st</b>"); |
Вывод в окно отладки логов.
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 |
// пройдёмся по всем ключевым словам for($aa=$aa_st; $aa < count($keys); $aa++) { // получим ключевое слово $key = trim($keys[$aa]); // вывод в панель отладки debug_mes("ключевое слово: $key"); // set 2 browser tabs $browser->set_count(2); // set active main browser tab $browser->set_active_browser(1,true); // navigate to google $browser->navigate("http://www.google.com"); // задаём слово в поиск $input->set_value_by_name("q",$key); $input->click_by_name("q"); $keyboard->send_key(32,true); sleep(2); // нажмём на поиск $keyboard->send_key(13,true); sleep(2); // если это рестарт перейдём на нужную страницу next_page(true); |
Эта часть скрипта вводит поисковый запрос в Google, а так же делает переход на нужный запрос и нужную страницу с поисковыми результатами после рестарта.
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 |
// до тех пор пока есть ссылки с цифрами переходим while(true) { // получим все ссылки на сайты заключённые в тэгах <cite> $sites=$webpage->get_body_inter_prefix_all("<cite>","</cite>"); $sites=explode("<br>",$sites); for($ii=$ii_st;$ii<count($sites);$ii++) { // переходим на сайт $site=str_replace("<b>","",trim($sites[$ii])); $site=str_replace("</b>","",$site); // вывод в панель отладки debug_mes("ссылка на каталог : ".$site); if($site=="") continue; // открыть и сделать активным новый браузер $browser->set_count(3); $browser->set_active_browser(2,true); $browser->navigate($site); // wait on browser $browser->wait_for(); // проверка на каталог if(!check_for_catalog("добавить сайт")) { // проверка на другой возможный текст check_for_catalog("Добавить сайт"); } $browser->close(); // закрываем и переходим обратно $browser->set_active_browser(1,true); // проверить надо ли перезапускать if($debug->get_cur_mem_size()>300000000) { // перезапускаем если превысили 300mb занимаемой памяти $app->restart($debug->get_cur_script_path(),"$aa $ii $crnt_page"); } } // не перешли на следующую страницу if(!next_page()) break; } // перед новым запросом обнули счётчик $crnt_page =1; } |
Эта часть скрипта ходит по сайтам и проверяет каталоги.
1 2 |
// отсортировать и убрать дубликаты $textfile->dedupe($res_catalogs,$res_catalogs,60); |
Отсортируем и удалим дубликаты из файла с результатами.
Скрипт написан 29.03.2012 в Human Emulator 4.4.14 Advanced.
На момент публикации статьи 29.03.2012 скрипт был рабочий.
Сергей
как я понимаю вы можете спарсить каталоги для программы SmartPoster ? если да…то это круто.
igorgrib
Да, программа может спарсить всё что угодно по любому запросу из выдачи поисковика, а после этого проанализировать собранные сайты по заданным критериям, например по каким то видимым элементам или по скрытым, по которым скажем можно определить движок сайта.