Версия программы: Human Emulator Studio 7.0.50.
Браузер: Chromium.
Логика: Получаем поисковые запросы из файла. Вводим их в поиск яндекса и разбираем выдачу на заданную глубину. Проверяем полученные ссылки сначала что это именно форумы или они имеют ссылки на форумы. Потом если надо переходим на форум и проверяем там ссылки на наличие заданных вариантов текста.
То есть по сути мы перешли на форум и проверили есть ли там разделы или темы с заданным вариантом текста.
Скрипт состоит:
Запускаемый файл collect_forums_ya.php. В файле functions.php прописаны подключаемые команды.
В папку res записываются файлы с результатами сбора и анализа в следующем виде: forums_bad.txt - не форумы, forums_good.txt - форумы, forums_good_post.txt - форумы, содержащие нужные разделы или темы.
В папке data лежит файл с запросами для поиска keywords.txt в формате одна строка один запрос.
Скачать скрипт:
Настройки скрипта:
// //////////////////////// настройки скрипта ///////////////////////// // путь к файлу ключевых слов $path_to_data = "data/keywords.txt"; // папка с результатами сбора и анализа $path_to_res = "res/"; // глубина прохода в поисковые результаты $cnt_pages = 20; // индекс текущей папки $inds_path = "data/inds.txt"; // стартовый индекс $str_index=0; // не форумы $path_bad_forums = "res\\forums_bad.txt"; // форумы $path_good_forums = "res\\forums_good.txt"; // форумы с нужными темами/разделами $path_good_post_forums = "res\\forums_good_post.txt"; // слова для проверки на форум $forum_str = "ФОРУМ;Форум;форум"; // название темы или раздела который нужно проверить на форуме $post_str = "PHP;php;пхп;ПХП;Php"; // фильтры при поиске ссылок из выдачи // ссылки содержащие данные слова пропускаются $filters = "yandex;youtube.com;wikibooks;wikipedia;vk.com;wiki.";
Сам скрипт:
// /////////////////////// скрипт /////////////////////////////////////////// debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт запустили"); // получаем массив с ключевыми словами $arr_of_kwds = file($path_to_data); // проверям есть ли уже обработанные запросы из файла if ($file_os->is_exist($inds_path)) { $str_index=trim($textfile->get_line_from_file($inds_path,false,0)); } $browser->close_all_tabs(); // добавить браузер $browser->set_count(2); $browser->set_active_browser(0); // пробежимся по всем ключевым словам for($ii=$str_index;$ii<count($arr_of_kwds);$ii++) { // ключевое слово $kwd = trim($arr_of_kwds[$ii]); if ($kwd == "") { continue; } // переходим на яндекс $browser->navigate("http://www.yandex.ru/"); sleep(2); // задаём слово в поиск $input->set_focus_by_name("text"); // вводим текст с нажатием enter $input->send_keyboard_input_by_name("text",$kwd."\n", "20:40"); // пауза sleep(3); // обнулим перед следующим проходом $crnt_page = 1; // работаем с ключевым словом на заданную длину while (true) { debug_mess(date("\[ d.m.y H:i:s\] ")." получаем ссылки из поиска<br>"); // получим все ссылки на сайты заключённые в префиксах $sites = $webpage->get_body_inter_prefix_all('link link_theme_normal organic__url', '</a>'); $sites = explode("<br>", $sites); // удалить дубликаты $sites = array_unique($sites); // пройдёмся по всем полученным ссылкам for($i = 0; $i < count($sites); $i++) { $pr1 = 'href="'; $pr2 = '"'; $site = get_string($sites[$i], $pr1, $pr2); // проверяем фильтры на ссылки if ($site == "" or !check_filters($site,$filters)) continue; // вывод в панель отладки debug_mess("ссылка на сайт : ".$site); $browser->set_active_browser(1); // разобрать ключи в файл check_forum($site,$kwd); sleep(2); debug_mess(date("\[ d.m.y H:i:s\] ")." закрываем все браузеры<br>"); $browser->close_all_tabs(); debug_mess(date("\[ d.m.y H:i:s\] ")." открываем две закладки<br>"); // добавить браузер $browser->set_count(2); debug_mess(date("\[ d.m.y H:i:s\] ")." делаем активной нулевую<br>"); $browser->set_active_browser(0); } debug_mess(date("\[ d.m.y H:i:s\] ")." переходим на следующую страницу выдачи<br>"); // организация перехода на следующую страницу if(!next_page($crnt_page)) { break; } debug_mess(date("\[ d.m.y H:i:s\] ")." удаляем дубликаты из файлов<br>"); // убираем строки-дубликаты из файлов после прохождения всех страниц $textfile->dedupe($path_bad_forums, $path_bad_forums, 60); $textfile->dedupe($path_good_forums, $path_good_forums, 60); $textfile->dedupe($path_good_post_forums, $path_good_post_forums, 60); } // вывод в панель отладки debug_mess("<b>".date("\[ d.m.y H:i:s\] ")."отработали запрос ".$kwd."</b>"); // запоминаем на всяк случай индекс для следующего запуска $str_index++; $textfile->write_file($inds_path,$str_index); } debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу<br>"); // убираем строки-дубликаты из файлов после прохождения всех страниц $textfile->dedupe($path_bad_forums, $path_bad_forums, 60); $textfile->dedupe($path_good_forums, $path_good_forums, 60); $textfile->dedupe($path_good_post_forums, $path_good_post_forums, 60); // удалить файл с индексом $file_os->delete($inds_path);