СКРИПТ: парсер Rulove.ru

Сбор и анализ всего что можно собрать из сети.
Ответить
Аватара пользователя
Ivan
Сообщения: 9
Зарегистрирован: 18 дек 2017, 18:53
Откуда: Севастополь
Контактная информация:

СКРИПТ: парсер Rulove.ru

Сообщение Ivan » 05 янв 2021, 18:53

Скрипт парсер анкет с сайта Rulove.ru.

Версия программы: 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 хранятся логи работы скрипта. Для каждого дня отдельный файл с логами.

Скачать скрипт:
parse_ankets_by_rulove.rar
(5.21 КБ) 77 скачиваний

Настройки скрипта:
// ссылка на сайт
$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("скрипт закончил работу");

Ответить