Pular para o conteúdo principal

Visão Geral da API

O A-Parser suporta gerenciamento via API, o que permite integrar o scraper em sistemas complexos (por exemplo, SaaS), utilizando os recursos do A-Parser a partir de outros programas e scripts.

A API é implementada com base no protocolo HTTP e serialização de dados JSON, podendo ser utilizada em qualquer linguagem de programação.

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

Resultado:

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

Exemplos de uso

  • Chamada e processamento de consultas únicas ou em lote para qualquer um dos scrapers, por exemplo:
    • Obtenção de uma lista de links do Google por consulta
    • Tradução de texto via Google Translate/Yandex Translate/DeepL
    • Obtenção de parâmetros por domínio, como data de registro, ranking Alexa e muitos outros
  • Adição de tarefas à fila e obtenção de resultados
  • Gerenciamento da fila de tarefas e controle do status das tarefas
  • Automação do trabalho de uma fazenda de scrapers

Clientes prontos

Para o A-Parser, existem clientes prontos que facilitam o trabalho com a API:

NodeJS

Perl

PHP

Python

Formação de uma requisição

A interação com o A-Parser ocorre via protocolo HTTP com serialização JSON da requisição e da resposta. Para realizar uma requisição à API, é necessário executar uma requisição POST para o endereço:

http://IP-do-servidor:9091/API

Os seguintes cabeçalhos devem obrigatoriamente ser enviados:

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

Como corpo da requisição, utiliza-se uma estrutura serializada em JSON:

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

Onde:

  • password - senha do A-Parser
  • action - método da API chamado
  • data - parâmetros da requisição, específicos para cada tipo de consulta, lista completa e descrição aqui

A resposta em formato geral se parece com isto:

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

Onde:

  • success - sucesso da requisição de API, pode assumir o valor 1 ou 0
  • data - resposta ao método chamado, pode ser um escalar ou um objeto, dependendo do tipo de requisição

Exemplo de código em PHP

Recomendamos utilizar o cliente para PHP; este código sem o uso do cliente é fornecido para fins informativos:

$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'];

Exemplo de código em Perl

Recomendamos utilizar o cliente para Perl; este código sem o uso do cliente é fornecido para fins informativos:

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();
};

Obtenção de requisição de API na interface

Para obter a requisição completa para a API no Editor de Tarefas, existe a função Show API query (Obter requisição de API). Com ela, é possível obter o JSON completo para uso no método addTask

Obtenção de requisição de API

Redis API

A Redis API é uma forma alternativa de integração do A-Parser através do servidor Redis, proporcionando maior flexibilidade e desempenho em alguns cenários.

Saiba mais sobre a Redis API

⏩ Vídeo de visão geral do trabalho com a API