Доброе время суток, уважаемые читатели!
Как и было обещано в предыдущей статье, рассмотрим работу с методом addTask
В данном примере мы будем добавлять задание, собирающее email'ы с помощью парсера HTML::EmailExtractor.
Настройки задания в интерфейсе A-Parser выглядят так:
Как получить JSON с настройками для запроса API было рассмотрено в предыдущей статье.
Добавим в наш класс EngineWeb несколько методов, а именно :
Метод GetEmailJson принимает в качестве параметра ссылку на сайт, который будем парсить и подставляет его в формируемый json:
- GetEmailJson - метод формирующий json с настройками задания
- addTaskEmail1 - метод отправляющий запрос API для добавления задания в очередь
- CheckStatus - метод отправляющий запрос API для получения статуса задачи
В методе addTaskEmail1 мы вызываем вышеописанный метод, получаем json с необходимыми настройками, и отправляем запрос для добавления задания в очередь.Код:/*метод формирующий JSON для сбора email с помощью AddTask*/ function GetEmailJson($url,$preset = false){ $json = json_encode([ 'action' => 'addTask', 'password' => $this->pass, 'data' => [ 'preset' => 'default', 'configPreset' => 'default', 'parsers' => [ [ 'HTML::EmailExtractor', 'default', [ 'type' => 'options', 'id' => 'parseLevel', 'value' => 2, ], [ 'type' => 'unique', 'result' => [ 'mails', 'mail' ], 'uniqueType' => 'string', 'uniqueGlobal' => true, ], [ 'type' => 'override', 'id' => 'user-agent', 'value' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36', ] ] ], 'resultsFormat' => '$p1.preset', 'resultsSaveTo' => 'file', 'resultsFileName' => '$datefile.format().txt', 'additionalFormats' => [], 'resultsUnique' => 'no', 'queriesFrom' => 'text', 'queries' => [ $url ], 'uniqueQueries' => true, 'saveFailedQueries' => false, 'iteratorOptions' => [ 'onAllLevels' => false, 'queryBuildersAfterIterator' => false, 'queryBuildersOnAllLevels' => false, ], 'resultsOptions' => [ 'overwrite' => false, 'writeBOM' => false, ], 'doLog' => 'no', ], ]); return $json; }
Нажимаем на кнопку и получаем ответ:Код:function addTaskEmail1($url){ $json = $this->GetEmailJson($url); $ch = curl_init($this->path); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $json); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($json))); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain; charset=UTF-8')); $response = curl_exec($ch); curl_close($ch); var_dump($response); }
Как видим, в результате приходит id добавленного в очередь задания. Теперь нужно в методе CheckStatus описать получение статуса задачи по его id:
Проверяем:Код:function CheckStatus($idTask){ $json = json_encode([ 'action' => 'getTaskState', 'password' => $this->pass, 'data' => [ 'taskUid' => $idTask ], ]); $ch = curl_init($this->path); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $json); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($json))); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain; charset=UTF-8')); $response = curl_exec($ch); curl_close($ch); var_dump($response); }
Ответ со статусом задании получен получен.
Точно по такому же принципу можно получить ссылку на файл результата с помощью метода getTaskResultsFile и многое другое.
Документация по работе с А-Парсером через API доступна здесь.
-
Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!Скрыть объявление
Работаем с API, часть 2
Пример работы с addTask
Метки: