Один из методов раскрутки сайта это добавление ссылки на него в каталоги. Хотя по этому поводу в интернете можно найти разные мнения, кто-то считает, что этот метод уже не работает и годится только для улучшения индексации, кто-то думает, что с помощью него можно получить целевой трафик и поднять сайт в выдаче.
Мы предлагаем вашему вниманию скрипт сборщик каталогов. Скрипт с помощью поисковой системы 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 скрипт был рабочий.
Сергей
как я понимаю вы можете спарсить каталоги для программы SmartPoster ? если да…то это круто.
igorgrib
Да, программа может спарсить всё что угодно по любому запросу из выдачи поисковика, а после этого проанализировать собранные сайты по заданным критериям, например по каким то видимым элементам или по скрытым, по которым скажем можно определить движок сайта.