Версия программы: Human Emulator Studio 7.0.56
Браузер: Chromium.
Логика:
1. Переходим по ссылке на сайт Rulove.ru;
2. После перехода на сайт скрипт выбирает гендер, возраст, город и нажимает кнопку "Найти";
3. Загружаются анкеты, соответствующие выбранным критериям поиска. Скрипт прокручивает скролл вниз, пока количество подгруженных сайтом анкет не будет равно необходимому количеству;
4. При достижении лимита скрипт парсит основные данные с анкеты (имя, возраст и фотографии);
5. Для каждой анкеты создается отдельная папка с названием ID анкеты, в которой находится файл формата id.txt с данными и одна или несколько сохраненных фотографий;
Скрипт состоит:
Запускаемый файл parser_ankets_by_rulove.php.
В папке tools в файле functions.php прописаны подключаемые команды.
В папке res записывается информация с результатами сбора.
В папке log хранятся логи работы скрипта. Для каждого дня отдельный файл с логами.
Скачать скрипт:
Настройки скрипта:
// ссылка на сайт $url = "rulove.ru/"; // гендер: 1-муж; 2-жен; 0-не важно $gender = 2; // возраст $age = 30; // город $city = "Москва"; // количество анкет для парсинга $count_ankets_limit = 10;
Код скрипта:
debug_mess("скрипт запустили"); $app->clear(); // переходим по ссылке $browser->navigate($url); sleep(3); // выбираем гендер echo "выбираем гендер<br>"; $obj_gender = $anchor->get_by_inner_text("Кого ищу", true); $obj_gender->focus(); sleep(2); $obj_gender->send_mouse_click(5,5); sleep(1); switch ($gender) { case 2: $keyboard->send_key("40"); case 1: $keyboard->send_key("40"); break; } sleep(1); $keyboard->send_key("13"); // выбираем возраст echo "выбираем возраст<br>"; $obj_age = $anchor->get_by_inner_text("В возрасте", true); $obj_age->focus(); sleep(2); $obj_age->send_mouse_click(5,5); sleep(1); set_age($age); // выбираем город $listbox->select_text_by_name("searchCity", $city, false); $listbox->send_event_by_name("searchCity", "onchange"); sleep(1); // кнопка искать $btn->click_by_inner_text("ИСКАТЬ", false); sleep(3); // получаем массив ссылок на анкеты $arr_href_ankets = []; $arr_href_ankets = get_arr_href_ankets($count_ankets_limit); // если нет папки с результатами - создаем if (!$folder->is_exist("res")) { $folder->create("res"); } // в цикле перебираем все анкеты foreach ($arr_href_ankets as $key => $value) { echo "обрабатываем анкету под номером $key<br>"; $id = substr($value, "-6"); echo "$id<br>"; // создаем папку $folder->create("res/$id"); $str = file_get_contents($value); sleep(2); // получаем имя $name = ""; $name = get_string_by_prefix($str, 'am-prof-head-name__fio">', "</span"); sleep(2); // получаем возраст $age_item = ""; $age_item = get_string_by_prefix($str, 'am-prof-info__value">', "</span"); // получаем фотографии $i = 1; $ind_st = 0; while (true) { $photo_url = get_string_by_prefix($str, 'profile-photo-group" href="', '"', $ind_st); if ($ind_st === false) { break; } // сохраняем фотографию echo "сохраняем фото: $photo_url<br>"; $webpage->save_url_to_file($photo_url, "res\\$id\\$i.jpg"); sleep(1); $i++; } $info = $name . "\r\n" . $age_item; $textfile->write_file("res\\$id\\$id.txt", $info, 60, true); } debug_mess("скрипт закончил работу");