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

Мы предлагаем вашему вниманию скрипт сборщик каталогов. Скрипт с помощью поисковой системы 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("запустили для ключего слова с индексом $aa_st 
для поисковой страницы $crnt_page
для ссылки $ii_st
");

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

// пройдёмся по всем ключевым словам
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)
{
    // получим все ссылки на сайты заключённые в тэгах 
    $sites=$webpage->get_body_inter_prefix_all("","");
    $sites=explode("
",$sites); for($ii=$ii_st;$ii","",trim($sites[$ii])); $site=str_replace("","",$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; }

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

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

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

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

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

комментария 2

    Сергей

    как я понимаю вы можете спарсить каталоги для программы SmartPoster ? если да…то это круто.

      igorgrib

      Да, программа может спарсить всё что угодно по любому запросу из выдачи поисковика, а после этого проанализировать собранные сайты по заданным критериям, например по каким то видимым элементам или по скрытым, по которым скажем можно определить движок сайта.

Добавить комментарий

*
*

Необходимые поля отмечены*