Vai al contenuto principale

Panoramica API

A-Parser supporta la gestione tramite API, il che consente di integrare lo scraper in sistemi complessi (ad esempio SaaS), utilizzando le funzionalità di A-Parser da altri programmi e script.

L'API è implementata sulla base del protocollo HTTP e della serializzazione dei dati JSON e può essere utilizzata da qualsiasi linguaggio di programmazione.

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

Risultato:

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

Esempi di utilizzo

  • Chiamata ed elaborazione di query singole o batch a qualsiasi scraper, ad esempio:
    • Ottenere un elenco di link da Google su richiesta
    • Traduzione di testi tramite Google Translate/Yandex Translate/DeepL
    • Ottenere parametri per dominio, come data di registrazione, Alexa rank e molti altri
  • Inserimento di task in coda e ricezione dei risultati
  • Gestione della coda dei task e controllo dello stato dei task
  • Automazione del lavoro di una farm di scraper

Client pronti all'uso

Per A-Parser esistono client pronti che semplificano il lavoro con l'API:

NodeJS

Perl

PHP

Python

Formazione della richiesta

L'interazione con A-Parser avviene tramite protocollo HTTP con serializzazione JSON della richiesta e della risposta. Per effettuare una richiesta all'API è necessario eseguire una richiesta POST all'indirizzo:

http://IP-del-server:9091/API

Devono essere trasmessi obbligatoriamente i seguenti header:

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

Come corpo della richiesta viene utilizzata una struttura serializzata in JSON:

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

Dove:

  • password - password per A-Parser
  • action - metodo API chiamato
  • data - parametri della richiesta, specifici per ogni tipo di richiesta, l'elenco completo e la descrizione sono disponibili qui

La risposta in forma generale appare così:

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

Dove:

  • success - successo della richiesta API, può assumere il valore 1 o 0
  • data - risposta al metodo chiamato, può essere uno scalare o un oggetto, a seconda del tipo di richiesta

Esempio di codice in PHP

Raccomandiamo di utilizzare il client per PHP, questo codice senza l'utilizzo del client è fornito a scopo illustrativo:

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

Esempio di codice in Perl

Raccomandiamo di utilizzare il client per Perl, questo codice senza l'utilizzo del client è fornito a scopo illustrativo:

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

Ottenere una richiesta API nell'interfaccia

Per ottenere la richiesta completa all'API nell'Editor dei task esiste la funzione Show API query (Ottieni richiesta API). Con il suo aiuto è possibile ottenere il JSON completo da utilizzare nel metodo addTask

Ottenere una richiesta API

Redis API

Redis API è un modo alternativo di integrazione di A-Parser tramite il server Redis, garantendo maggiore flessibilità e prestazioni in alcuni scenari

Maggiori informazioni su Redis API

⏩ Video recensione del lavoro con l'API