X-Scripts

Power by humanemulator

НАШИ КОНТАКТЫ:
ICQ My ICQ 625657402: 625657402
Наш скайп: igor_sev2
Email : order@x-scripts.com

Сообщество программистов и манимейкеров


Human Emulator Free!
Бесплатная версия программы Human Emulator!
Скачать программу можно тут!

Скрипт для добавления объявлений на сайт irr.ru

В этой статье мы рассмотрим один из примеров написания скрипта для добавления объявлений на сайт irr.ru, в раздел Компьютерная техника->Ноутбуки.
Начнем с подготовительной части - просмотрим сайт и узнаем какие поля обязательны для заполнения и какие нам бы хотелось заполнить дополнительно.

В нашем случае это будет - Область;город;цена (в руб.);марка;модель;состояние;тип предложения;вес(кг);размер жесткого диска (в Гб);тип видеокарты;объем памяти; диагональ экрана(дюймы);время работы батареи(часы);тип аккумулятора;описание;название папки с фотографиями;контактное лицо;телефон;скайп.

В таком виде (через ";") данные будут вбиваться в текстовый файл, откуда в последствии будут взяты при добавлении объявления.

Начнем с настроек:

$dbg = true; - вкл. панель отладки
// ключ к капчи
$apikey = "";  - ключ для сервиса anti-captcha.com
// путь к папке с фото
$picture = "data/";       - путь к папке с папками фотографий объявлений
// путь к капче
$img = "res/";   - путь к сохраняемой капчи
// путь к файлу с данными
$path = "data/adds.txt";  - путь к файлу с данными объявлений
// данные для авторизации
$login = "testnot@mail.ru";
$pass = "testfortest";
// ожидание ( в секундах)
$wt_long = 10;
$wt = 5;

Начнем писать скрипт:

Читаем данные и присвоим им переменные для удобства:

$adds = $textfile->read_file($path);

Получим массив объявлений, разбив данные объявлений из текстового файла через перенос строки

$add = explode("\r\n",$adds);

Затем перейдем на сайт

$browser->navigate("http://irr.ru/");

Авторизируемся

$input->set_value_by_name("login",$login);
$input->set_value_by_name("password",$pass);
$button->click_by_inner_text("Вход",false);

Переходим к подаче объявления

$anchor->click_by_inner_text("Подать объявление",false);

C помощью цикла начинаем подачу объявлений

for($i = $num; $i<count($add); $i++)

Получаем элементы данных объявления в массиве

$item = explode(";",$add[$i]);

Начинаем вбивать данные:

// область
   $anchor->set_focus_by_href("javascript:void(0)",false);
   $keyboard->send_input($item[0]);
   $keyboard->send_key(9);

// город
   $input->set_value_by_name("address_city",$item[1]);

Затем обходим простым способом javascript с помощью клавиатуры:

// перейдем к категории ноутбуки
   $keyboard->send_key(9);
   $keyboard->send_key(40,true);
   $keyboard->send_key(40);
   $keyboard->send_key(40);
   $keyboard->send_key(40);
   $keyboard->send_key(40);
   $keyboard->send_key(13,true);
   sleep($wt);
	
   $keyboard->send_key(9);
   $keyboard->send_key(40,true);
   $keyboard->send_key(40);
   $keyboard->send_key(13,true);
   sleep($wt);
	
   $keyboard->send_key(9);
   $keyboard->send_key(40,true);
   $keyboard->send_key(40);
   $keyboard->send_key(9);
   sleep($wt);

Продолжаем заполнение объявления:

// цена
   $input->set_value_by_name("price",$item[2]);

Модель и марку выбираем через "другая" для упрощения кода:

// марка
   $anchor->set_focus_by_inner_text("* Выберите марку",false);
   $keyboard->send_input("Другая");
   $keyboard->send_key(9);
   $input->set_value_by_name("make_other",$item[3]);
	
// модель
   $input->set_value_by_name("model_other",$item[4]);

// состояние (привязка к слову "новый", в противном случае всегда будет б/у)
   $anchor->set_focus_by_inner_text("* Состояние",false);
	if($item[5] == "новый")
	{
		$keyboard->send_key(40);
		$keyboard->send_key(40);
		$keyboard->send_key(40);
	}
	else
	{
		$keyboard->send_key(40);
		$keyboard->send_key(40);
	}
	$keyboard->send_key(9);
		
// тип предложения (снова используем клавиатуру)
   $anchor->set_focus_by_inner_text("* Тип предложения",false);
	if($item[6] == "куплю")
	{
		$keyboard->send_key(40);
		$keyboard->send_key(40);
	}
	elseif($item[6] == "продам")
	{
		$keyboard->send_key(40);
		$keyboard->send_key(40);
		$keyboard->send_key(40);
	}
	elseif($item[6] == "обменяю")
	{
		$keyboard->send_key(40);
		$keyboard->send_key(40);
		$keyboard->send_key(40);
		$keyboard->send_key(40);
	}
	else
	{
		$keyboard->send_key(40);
		$keyboard->send_key(40);
		$keyboard->send_key(40);
		$keyboard->send_key(40);
		$keyboard->send_key(40);
	}
	$keyboard->send_key(9);

// вес (кг)
   $input->set_value_by_name("weight",$item[7]);
	
// размер жесткого диска (в Гб)
   $input->set_value_by_name("hdd",$item[8]);

// тип видеокарты (привязка к слову "встроенная", иначе всегда "дискретная")
   $anchor->set_focus_by_inner_text("тип видеокарты",false);
	if($item[9] == "встроенная")
	{
		$keyboard->send_key(40);
	}
	else
	{
		$keyboard->send_key(40);
		$keyboard->send_key(40);
	}
	$keyboard->send_key(9);

// объем памяти (в мб)
   $anchor->set_focus_by_inner_text("Объем памяти, Мб",false);
   $keyboard->send_input($item[10]);
   $keyboard->send_key(9);

// диагональ экрана (дюймов)
   $input->set_value_by_name("diagonal",$item[11]);
	
// время работы батареи (ч)
   $input->set_value_by_name("battery",$item[12]);
	
// тип аккумулятора
   $input->set_value_by_name("tip_akkumuljatora",$item[13]);
	
// описание
   $textarea->set_value_by_name("text",$item[14]);

Обрабатываем добавление фотографий:

// фотографии (не более 10),считываем все фотографии из указанной папки (по названию) в данных объявления:
   $photos = $folder->get_all_items($picture.$item[9],false,false);
   
// получаем массив путей к фото:
   $images = explode("\r\n", $photos);
	
// добавляем все фото на сайт:
   foreach($images as $photo)
	{
		$window->execute_open_file("Выбор",$photo,"&Открыть",false,true);
		$inputfile->click_by_name("photo");
		sleep($wt);
	}

Завершаем добавление данных:

// контактное лицо
   $input->set_value_by_name("seller",$item[10]);
	
// телефон
   $input->set_value_by_name("phone",$item[11]);
	
// скайп
   $input->set_value_by_name("skype",$item[12]);

Обрабатываем капчу:

// капча
   $img = realpath($img);
   $image->screenshot_by_name($img."/captcha.jpeg","captcha");
   $captcha = $anticapcha->recognize($img."/captcha.jpeg", $apikey, $path ='http://www.anti-captcha.com',true,5,120,0,0,1,0,0,0);
   $input->set_value_by_name("captcha",$captcha);
   sleep($wt);

Жмем "далее":

$button->click_by_name("next_link");

Ждем обработку объявления, проверяя наличие соответствующего сообщения на странице:

while(!$h2->is_exist_by_inner_text("Выберите формат Вашего объявления",false))
sleep($wt_long);

Выбираем бесплатный вариант добавления:

$anchor->click_by_inner_text(" на 30 дней Бесплатно",false);
sleep($wt);

Проверяем успешность добавления, опять-таки через проверку наличия соответствующего сообщения на странице:

if ($h2->is_exist_by_inner_text("Спасибо! Ваше объявление размещено на irr.ru",false))
	{
		debug_mess("объявление размещено");
		sleep($wt);
	}
	else
	{
		debug_mess("объявление НЕ размещено");
		sleep($wt);
	}

Примечание:
1) не забываем ставить "слипы" (sleep), особенно, если интернет медленный или компьютер маломощный;

2) скрипт расчитан на добавление до 3-х фотографий;

3) для корректной работы,перед запуском скрипта, отключить сообщения браузера (сервис-настройки-браузер-отключить сообщения браузера).

Логика скрипта:
1) считывание данных объявления;

2) переход на сайт и авторизация;

3) добавление объявления;

4) проверка успешности добавления;

Скрипт написан 19.11.2014 в Human Emulator 4.6.50 Advanced.

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

<< Другие скрипты