Доброе время суток, уважаемые читатели!
Как и было обещано в предыдущей статье, рассмотрим работу с методом addTask
В данном примере мы будем добавлять задание, собирающее email'ы с помощью парсера
HTML::EmailExtractor.
Настройки задания в интерфейсе A-Parser выглядят так:
Как получить JSON с настройками для запроса API было рассмотрено в предыдущей статье.
Добавим в наш класс EngineWeb несколько методов, а именно :
В методе addTaskEmail1 мы вызываем вышеописанный метод, получаем json с необходимыми настройками, и отправляем запрос для добавления задания в очередь.
Нажимаем на кнопку и получаем ответ:
Как видим, в результате приходит id добавленного в очередь задания. Теперь нужно в методе CheckStatus описать получение статуса задачи по его id:
Проверяем:
Ответ со статусом задании получен получен.
Точно по такому же принципу можно получить ссылку на файл результата с помощью метода getTaskResultsFile и многое другое.
Документация по работе с А-Парсером через API доступна здесь.
Как и было обещано в предыдущей статье, рассмотрим работу с методом addTask
В данном примере мы будем добавлять задание, собирающее email'ы с помощью парсера
HTML::EmailExtractor.Настройки задания в интерфейсе A-Parser выглядят так:
Как получить JSON с настройками для запроса API было рассмотрено в предыдущей статье.
Добавим в наш класс EngineWeb несколько методов, а именно :
- GetEmailJson - метод формирующий json с настройками задания
- addTaskEmail1 - метод отправляющий запрос API для добавления задания в очередь
- CheckStatus - метод отправляющий запрос API для получения статуса задачи
Код:
/*метод формирующий 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;
}
В методе addTaskEmail1 мы вызываем вышеописанный метод, получаем 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 доступна здесь.