HumanEmulator Планировщик задач (Task Scheduler)

Особенности работы с «Планировщиком задач» от Windows.

Задача: Запускать HumanEmulator с определенным скриптом каждые 5 минут.

Исходные данные:

Путь к exe файлу HumanEmulator :

C:\XWeb\Human Emulator Advanced 4.9.26\XWeb Human Emulator MT UE.exe

Путь к файлу скрипта:

C:\XWeb\Human Emulator Advanced 4.9.26\My Scripts\44bu\44bu.php

Дополнительные условия:

Порт для запуска: 7010

Состояние окна: при запуске сразу сворачивать в трей

Решение:

1. Запустить приложение «Планировщик заданий»

В панели пуск в поиске набираем текст «Планировщик заданий»

Найти Планировщик заданий
2. Создать новую задачу
В правой панели программы нажимает на позицию в меню: «Создать задачу…»

Заполняем поле «Имя задачи» и ставим галочку «Выполнить с наивысшими правами»

Жмем OK

Создать триггер НаСоздать задачу Планировщик заданий Windows

3. Создать триггер

Переходим на таб «Триггеры» , жмем кнопку «Создать».

Создать триггер Планировщик заданий Windows

4. Настроить триггер

Выбираем опции

«Ежедневно», «Включено», «Повторять каждый 1 день», «Повторять задачу каждые» 5 мин.»

Жмем OK

Настроить триггер Планировщик заданий Windows

5. Создать действие

Переходим на таб «Действия» , жмем кнопку «Создать».

Создать действие Планировщик заданий Windows

6. Настроить действие

Выбираем опцию «Запуск программы»

Жмем кнопку «Обзор» и выбираем exe файл HumanEmulator в нашем случае

«C:\XWeb\Human Emulator Advanced 4.9.26\XWeb Human Emulator MT UE.exe»

Значение аргументов «Добавить аргументы»:

/script:»C:\XWeb\Human Emulator Advanced 4.9.26\My Scripts\44bu\44bu.php» /port:»7010″  /in_tray:»true»

Дополнительная информация о аргументах .

Жмем OK

Настроить действие Планировщик заданий Windows

7. Настроить «Параметры»

Снять галки на позициях:

«Останавливать задачу, исполняемую дольше:», «Принудительная остановка программы, если она не прекращается по запросу».

Выбрать опцию : «Не запускать новый экземпляр»

Жмем OK

Настроить параметры Планировщик заданий Windows

Готово!

Важно:

1. Особенность работы в том , что экземпляр приложения должен быть запущен именно автоматически (Планировщиком).

Если приложение HumanEmulator уже запущено (вручную), то появится сообщение об ошибке (порт уже используется).

Код скрипта должен содержать в результате выполнения (последняя инструкция скрипта) операцию выгрузки приложения HumanEmulator $app->exitapp();

2. Дополнительно в табе «Журнал» можно проконтролировать возможные ошибки.

Порядок работы по командам от планировщика:

1. Первый Запуск
Первый запуск и работа скрипта HumanEmulator по команде от планировщика
2. Периодический запуск

а) Опция в настройках «Принудительная остановка программы, если она не прекращается по запросу» отключена и «Останавливать задачу, выполняемую дольше» отключена

Если Планировщик должен по расписанию запустить HumanEmulator, а он еще работает (в процессе работы), то запуск произведен не будет (запущен).
Если скрипт остановлен (кнопка stop или произошел сбой в работе скрипта), то запуск произведен не будет, так как HumanEmulator считается запущенным.

б) Опция в настройках «Принудительная остановка программы, если она не прекращается по запросу» включена или «Останавливать задачу, выполняемую дольше» включена со значением «1час».

Работа HumanEmulator будет прекращена (если экземпляр HumanEmulator уже  запущен) для нового запуска, если задача выполняется дольше условленного времени (1 час).

Возможные ошибки

  1. Важно создать и заполнить «Триггер» и «Действие»
  2. Важно корректно заполнить аргументы при запуске.
  3. Код скрипта в конечном итоге должен содержать инструкцию  $app->exitapp();

 

 

 

Получить цифру из строки независимо от кодировки PHP

Сложность возникла при получении цифры из строчки в Win-1251 для UTF-8 . Ситуация конечно надуманная, однако вспомним, что код для цифр и английских букв в кодировках единый.

$str = '№ 101';
preg_match_all('!\d+!', $str, $eNum1);
$eNum1 = (int)$eNum1[0][0];

где

$str -исходная строка содержащая цифру например ‘№ 101’;

$eNum1 — результат (будет 101).

Получить нулевой элемент из нулевого элемента массива [0][0].

Парсер вебмастера для WordPress

Простейший парсер для мастера Яндекс для владельцев WordPress сайтов для определения страниц сайта не попавших под индексирование (отсутствуют в поиске Яндекс). Скрипт для приложения HumanEmulator

В коде необходимо установить значение следующих полей:

//Название сайта (без http://www.)
$search_site="a.com";

//Ссылка на карту сайта в нашем случае на посты (статьи)
$browser->navigate('http://www.'.$search_site.'/sitemap_post.xml');

//Логин и пароль для вэбмастера для авторизации
$input->set_value_by_name("login","login_value");
$input->set_value_by_name("passwd","password");

Результатом работы скрипта является файл с ссылками на страницы не проиндексированные : res\\ya.».$search_site.».html

Порядок работы:

1) Сходить по ссылке на карту сайта и собрать все страницы нашего сайта

2) Зайти в Вэбмастер и собрать в разделе «Страницы в поиске» проиндексированные страницы

3) Сравнить коллекции ссылок, чтобы собрать массив ссылок (страниц) не входящих в индексацию яндекса

4) Получить названия страниц из поиска Гугл (в моем случае урл сайта)

5) Вывести результат в виде html файла и показать в браузере по умолчанию (кликабельные ссылки)

Скачать:

Гугл диск

Спарсить сайт (готовый результат)

Для контактов:

Skype:  kuzne4ikalex

Если у Вас нет возможности приобрести HumanEmulator или нет опыта программирования. Наша команда выполнить сбор данных с открытых источников (публичных).

Формат данных

Данные могут быть представлены в в виде csv файла, файла БД или структурированного каталога файлов. От Вас требуется определить формат результата и предоставить данные для авторизации на сайте (если необходимо).

Спарсить каталог

Выполнить сбор данных с сайта-каталога с соблюдением структуры.

Спарсить товары с сайта

Выполнить сбор данных с сайта-магазина с соблюдением структуры.

Перенос данных с сайта донора

Выполнить сбор и одновременный перенос данных от сайта донора к целевому сайту.

Сделать выборки по поисковым запросам

Выполнить сбор данных с сайта используя поисковую форму, если иной возможности нет.

Постинг

Размещать массово объявления на площадках. Отслеживать позицию объявления.

Пример оформления заявки на парсинг

Спарсить сайт такой то в категории все товары для охоты

В csv файл разделитель ;  (точка с запятой)
Поля:
1. Артикул
2. Наименование
3. Описание(сохраняя теги, изображения, аудио дорожки и видео)
4. Категория и подкатегории товаров. Разделитель |
5. Производитель
6. Изображения Разделитель , (запятая)
Изображения залить в одну папку
7. Атрибуты товаров по категориям (цвет, размеры, вес, кол-во штук в комплекте)

В итоге должен получиться один csv со всеми товарами(+ папка с изображениями).

Сведения о защите: защиты нет

Оплата

По результату от 2000 руб в зависимости от объема и сложности. WebMoney, QIWI или YandexMoney

Срок выполнения от 2 дней.

Функции по работе с файлами php вместо встроенных

На основе большого опыта работы с движком HumanEmulator, обратил внимание, что можно повысить отказоустойчивость, если не использовать функций работы с файлами, такие как: $textfile и $file_os . Это связанно с тем, что HumanEmulator принимает команды, как запросы серверу, соответственно большой поток таких команд может привести к критическим ошибкам в работе приложения, также наблюдается небольшой прирост к скорости исполнения.   Ниже представлен альтернативный список методов.


//Получить размер фала в байтах
$file_size = $file_os->get_size("res\\text.txt");

//Альтернатива
$file_size = filesize ("res\\text.txt");

//Получить число строчек в файле
$lines_count = $textfile->get_lines_count("data\\text.txt");

//Альтернатива
$lines_count = get_lines_count("data\\text.txt");

// Создание/Перезапись файла и запись в него текста
$textfile->write_file($file_path,$text,60);

//Альтернатива
file_put_contents($file_path, $text);

// Добавить текст в конец файла
$textfile->add_string_to_file("res\\file.txt", $text, 60) ;

//Альтернатива
file_put_contents($file, $str, FILE_APPEND | LOCK_EX);

//Проверить существование файла
if($file_os->is_exist("res\\text.txt")){
}

//Альтернатива
if(file_exists("res\\text.txt")){}

//Удалить файл
$file_os->delete("res\\text.txt"))

//Альтернатива
unlink("res\\text.txt");

//Заменить строки в файле на другое значение
$textfile->replace_string("data\\text.txt", "data\\text.txt", $old_value, $new_value, 60);

//Альтернатива (для одного и того же файла)
//read the entire string
$str=file_get_contents($file);

//replace something in the file string - this is a VERY simple example
$str=str_replace($oldValue, $newValue, $str);

//write the entire string
file_put_contents($file, $str);

//Получить n строчку из файла
$val = $textfile->get_line_from_file("data\\text.txt", false, $n, 60);

//Альтернатива
function get_line_from_file($file, $line_num, $delimiter="\n")
{
/*** set the counter to Zero ***/
$i = 0;

/*** open the file for reading ***/
$fp = fopen( $file, 'r' );

/*** loop over the file pointer ***/
while ( !feof ( $fp) )
{
/*** read the line into a buffer ***/
$buffer = stream_get_line( $fp, 9999, $delimiter );
/*** if we are at the right line number ***/
if( $i == $line_num )
{
/*** return the line that is currently in the buffer ***/
return rtrim($buffer);
}
/*** increment the line counter ***/
$i++;
/*** clear the buffer ***/
$buffer = '';
}
return false;
}

Список UserAgent ( UserAgent list)

//Код для получения 0 линии в файле
//Code for get 0 line number from target file
$user_agent= $textfile->get_line_from_file("data\\useragents.txt", false, 0, 60);

// Код для установки браузеру UserAgent в HumanEmulator
// Code for set UserAgent ащк IE in HumanEmulator
$browser->set_user_agent($user_agent);

Файл useragents.txt содержит список проверенных UserAgent ов
File useragents.txt contains list valid UserAgent s

Google drive

HumanEmulator примеры использования. Сборка тестов

clicktesting

В последних версиях HumanEmulator появилась возможность использовать .NET C#.

В продолжении темы использования .NET хочу представить исходный код UnitTest проекта сделанного на основе представленных в HumanEmulator новых классов.

К сожалению на текущий момент для ознакомления с функциональностью нужно производить ряд манипуляций что не вполне удобно. Я свел все методы в один проект и сделал это в понятном виде, в виде тестов.

На картинке пример полностью переделанного рабочего метода по этому образцу можно редактировать остальные методы.

Для работы тестов необходимо запустить экземпляр HumanEmulator настроенный на порт 7015.

При запуске в  режиме Debug в Output должен выйти следующий текст:

Запуск теста interface.click
1. Перейдем на полигон :
2. Щелкнем по элементу с href равным http://www.bigfozzy.com/
3. Кликнем по элементу с текстом SEO Магазин и выведем его координаты
Координаты x = -1 y = 615

Ссылка для скачивания : googledrive

Если запуск не происходит, то следует перезапустить HumanEmulator.

В настоящий момент наблюдаются сбои в работе на стороне сервера, то есть иногда может потребоваться перезагрузка компьютера.

Ознакомление HumanEmulator .NET C#

В последних версиях HumanEmulator появилась возможность использовать .NET C#.

Внимательные пользователи смогли обнаружить в проекте две новые папки:

XWeb\Human Emulator Advanced 4.9.19\Templates CSHARP — содержит проект .NET библиотеки для работы с сервером HumanEmulator.

XWeb\Human Emulator Advanced 4.9.19\Test Samples CSHARP — содержит примеры использования классов.

Каждый пример отдельный файл со статическим методом Main.

Для запуска необходимо:

  • создать проект консольного приложения, поместить туда класс из примера(можно заменить пустой файл Program.cs)
  • добавить проект XWeb\Human Emulator Advanced 4.9.19\Templates CSHARP \Lib\XHE\XHE\XHE.csproj
  • запустить приложение HumanEmulator. Класс \XWeb\Human Emulator Advanced 4.9.19\Templates CSHARP\Lib\XHE\XHE\XHEScript.cs содержит строку
    public static string server = «127.0.0.1:7017» — это локальный адрес нашего компьютера и порт 7017, что означает, что необходимо запущенный экземпляр HumanEmulator установить на 7017 порт (в данном случае).
  • теперь можно скомпилировать и запустить консольное приложение.

Вот проект-пример, что должно было получится скачать здесь.

Примечание: Думаю большинство пользователей не ведают о том что запускаемое приложение HumanEmulator является двойным. Одновременно клиент и управляемый сервер.

В запущенном экземпляре HEmulator можно наблюдать за переходами на целевом сайте. Если вы скачали пример то можно наблюдать такую последовательность работы:

1.Переход по адресу www.humanemulator.net/poligon/anchor.html

PoligonAnchorHref

2. Переход щелчком мыши по элементу с href равным http://www.bigfozzy.com/

SEomarket3. Переход на SEO Магазин

BigfozzycomА вот как будет выглядеть консоль вывода приложения:

ConsoleКак видно привычный процесс теперь происходит в двух окнах. HEmulator теперь сервер(управляемый) . А наше консольное приложение посылает ему команды (Request) и принимает ответы с данными о выполнении.

Вывод:

Плюсы:

  • Стал доступен  весь арсенал возможностей, что и был в базовой версии для .NET.
  • HumanEmulator теперь можно интегрировать в другие проекты
  • Теперь можно использовать мощь интегрированной среды разработки VisualStudio
  • Нет больше детских болезней php

Минусы:  Интерфейс пользователя меню и подсказки HumanEmulator в помощь разработчику тепtрь не доступны, но для серьезной работы это не будет помехой.

 

Добро пожаловать!

Этот блог предназначен для освещения возможностей HumanEmulator  . Этот продукт, который обладает большим потенциалом для решения различных задач.

Я считаю, что каждая статья, которая здесь будет предоставлена станет открытием новых интересных возможностей применения HumanEmulator а.