Перейти к основному содержимому

Обзор API

A-Parser поддерживает управление через API, что позволяет интегрировать парсер в состав сложных систем (например SaaS), используя возможности A-Parser из других программ и скриптов.

API реализовано на основе HTTP протокола и JSON сериализации данных и может использоваться из любого языка программирования

curl http://127.0.0.1:9091/API \
-H 'Content-Type: application/json' \
-d '{"password":"123","action":"ping"}'

Результат:

{"success":1,"data":"pong"}

Примеры использования

  • Вызов и обработка одиночных или пакетных запросов к любому из парсеров, например:
    • Получение списка ссылок с Google по запросу
    • Перевод текста через переводчик Google Translate/Яндекс переводчик/DeepL
    • Получение параметров по домену, таких как дата регистрации, ранк Alexa и множество других
  • Постановка заданий в очередь и получение результатов
  • Управление очередью заданий и контроль состояния заданий
  • Автоматизация работы фермы парсеров

Готовые клиенты

Для A-Parser есть готовые клиенты, которые упрощают работу с API:

NodeJS

Perl

PHP

Python

Формирование запроса

Взаимодействие с А-Парсером происходит по протоколу HTTP с JSON сериализацией запроса и ответа. Для осуществления запроса к API необходимо выполнить POST запрос на адреc:

http://IP-сервера:9091/API

Обязательно должны быть переданы заголовки:

  • content-length
  • content-type: application/json

В качестве тела запроса используется JSON-сериализованная структура:

{
"password": "pass",
"action": "oneRequest",
"data": {
...
}
}

Где:

  • password - пароль на A-Parser
  • action - вызываемый метод API
  • data - параметры запроса, свои для каждого типа запроса, полный перечень и описание здесь

Ответ в общем виде выглядит так:

{
"success": 1,
"data": "..."
}

Где:

  • success - успешность API запроса, может принимать значение 1 или 0
  • data - ответ на вызванный метод, может быть скаляром или обьектом, зависит от типа запроса

Пример кода на PHP

Рекомендуем использовать клиент для PHP, данный код без использования клиента приведен в ознакомительных целях:

$aparser = 'http://127.0.0.1:9091/API';

$request = json_encode(array(
'action' => 'oneRequest',
'data' => array (
'parser' => 'SE::Google',
'preset' => 'Pages Count use Proxy',
'query' => 'test'
),
'password' => 'pass'
));

$ch = curl_init($aparser);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($request)));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain; charset=UTF-8'));

$response = curl_exec($ch);
curl_close($ch);

$response = json_decode($response, true);
echo $response['data']['resultString'];

Пример кода на Perl

Рекомендуем использовать клиент для Perl, данный код без использования клиента приведен в ознакомительных целях:

use LWP;
use JSON::XS;

my $aparser = 'http://127.0.0.1:9091/API';

my $request = encode_json {
'action' => 'oneRequest',
'data' => {
'parser' => 'SE::Google',
'preset' => 'Pages Count use Proxy',
'query' => 'test'
},
'password' => 'pass'
};

my $ua = LWP::UserAgent->new();

my $response = $ua->post(
$aparser,
'Content-Type' => 'text/plain; charset=UTF-8',
'Content-Length' => length $request,
'Content' => $request
);

if($response->is_success) {
my $json = decode_json $response->content();
print $json->{'data'}->{'resultString'};
}
else {
warn 'Response fail: ', $response->status_line();
};

Получение запроса API в интерфейсе

Для получения полного запроса к API в Редакторе заданий существует функция Получить API запрос. С ее помощью можно получить полный JSON для использования в методе addTask

Получение запроса API

Redis API

Redis API является альтернативным способом интеграции A-Parser через сервер Redis, обеспечивая большую гибкость и производительность в некоторых сценариях

Подробнее про Redis API

⏩ Видео обзор работы с API