Скрипт Human Emulator cборщик каталогов

Один из методов раскрутки сайта это добавление ссылки на него в каталоги. Хотя по этому поводу в интернете можно найти разные мнения, кто-то считает, что этот метод уже не работает и годится только для улучшения индексации, кто-то думает, что с помощью него можно получить целевой трафик и поднять сайт в выдаче.

Мы предлагаем вашему вниманию скрипт сборщик каталогов. Скрипт с помощью поисковой системы Google собирает в файл ссылки на каталоги. Принцип определения каталога это наличие на странице рабочей ссылки «Добавить сайт» или «добавить сайт». Если переход по ссылке совершен, значит это каталог. Так же в скрипт добавлены возможность определять есть ли в каталоге заданные темы и просит ли каталог ввести каптчу или нет. Если в каталоге нету заданной темы или он просит ввести каптчу, каталог не пишется в файл.

Теперь рассмотрим детальнее сам скрипт.

1. Настройки скрипта:

// ключи для поиска каталогов
$keys = file("./data/keys.txt"); 

В файле keys.txt содержатся поисковые запросы, которые мы вбиваем в Google для поиска каталогов. Формат файла:
каталог сайтов
добавить сайт
автокаталог

// для проверки тематики каталога 
$themas = file("./data/themas.txt"); 

В файле themas.txt лежит список тем, на которые мы проверяем каталоги. Формат файла:
авто
спорт

// файл с результатами
$res_catalogs = "./res/catalogs.txt"; Файл, в который пишутся каталоги.

// проверять ли тематику
$b_check_themas = false; - задаём проверять ли тематику.
// проверяем есть ли каптча
$b_check_captcha = false; - задаём проверять ли наличие каптчи

// глубина прохода в поисковые результаты
$cnt_pages = 15; - сколько страниц с поисковыми результатами для каждого запроса должен обработать скрипт.

// режим отладки
$dbg=true; - вывод в панель отладки логов скрипта.

2. Дополнительные модули:

// основные функции
require_once("functions.php"); - тут мы подключаем дополнительные функции для работы скрипта. Функции находятся в файле functions.php, который лежит в папке со скриптом.

3. Скрипт:

// задать время ожидания загрузки
$browser->set_wait_params(10,1); 

Это нововведение с версии 4.4.10. Теперь не надо вызывать функцию $browser->wait_for(); после каждого клика или перехода страницы. Достаточно один раз задать в начале скрипта с помощью этой функции. Параметры в функцию передаются аналогично wait_for.описание функции wait_for

// стартовый индекс для поисковых запросов
$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. Поэтому приходится при интенсивной работе скрипта с сайтами делать рестарт программы для обнуления памяти.

debug_mes("<b>запустили для ключего слова с индексом $aa_st <br>для поисковой страницы $crnt_page <br> для ссылки $ii_st</b>");

Вывод в окно отладки логов.

// пройдёмся по всем ключевым словам
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, а так же делает переход на нужный запрос и нужную страницу с поисковыми результатами после рестарта.

// до тех пор пока есть ссылки с цифрами переходим
while(true)
{
    // получим все ссылки на сайты заключённые в тэгах <cite>
    $sites=$webpage->get_body_inter_prefix_all("<cite>","</cite>");
    $sites=explode("<br>",$sites);

    for($ii=$ii_st;$iiset_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;
}

Эта часть скрипта ходит по сайтам и проверяет каталоги.

// отсортировать и убрать дубликаты
$textfile->dedupe($res_catalogs,$res_catalogs,60);

Отсортируем и удалим дубликаты из файла с результатами.

Скрипт написан 29.03.2012 в Human Emulator 4.4.14 Advanced.
На момент публикации статьи 29.03.2012 скрипт был рабочий.

скачать скрипт