Zum Hauptinhalt springen

API-Übersicht

A-Parser unterstützt die Steuerung über eine API, was es ermöglicht, den Parser in komplexe Systeme (z. B. SaaS) zu integrieren und die Funktionen von A-Parser aus anderen Programmen und Skripten zu nutzen.

Die API ist auf Basis des HTTP-Protokolls und der JSON-Datenserialisierung implementiert und kann von jeder Programmiersprache aus verwendet werden.

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

Ergebnis:

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

Beispiele für die Verwendung​

  • Aufruf und Verarbeitung von Einzel- oder Batch-Anfragen an einen der Scraper, zum Beispiel:
    • Abrufen einer Liste von Links von Google auf Anfrage
    • Textübersetzung über Google Translate/Yandex Translate/DeepL
    • Abrufen von Domain-Parametern wie Registrierungsdatum, Alexa Rank und vielen anderen
  • Hinzufügen von Aufgaben zur Aufgabenwarteschlange und Abrufen von Ergebnissen
  • Verwaltung der Aufgabenwarteschlange und Kontrolle des Aufgabenstatus
  • Automatisierung des Betriebs einer Parser-Farm

Fertige Clients​

Für A-Parser gibt es fertige Clients, die die Arbeit mit der API vereinfachen:

NodeJS​

Perl​

PHP​

Python​

Erstellung einer Anfrage​

Die Interaktion mit A-Parser erfolgt über das HTTP-Protokoll mit JSON-Serialisierung von Anfrage und Antwort. Um eine Anfrage an die API zu stellen, muss ein POST-Request an folgende Adresse gesendet werden:

http://IP-Server:9091/API

Folgende Header müssen zwingend übermittelt werden:

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

Als Anfrage-Body wird eine JSON-serialisierte Struktur verwendet:

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

Wobei:

  • password - das Passwort für A-Parser
  • action - die aufgerufene API-Methode
  • data - Anfrageparameter, spezifisch für jeden Anfragetyp; eine vollständige Liste und Beschreibung finden Sie hier

Die Antwort sieht im Allgemeinen so aus:

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

Wobei:

  • success - Erfolg der API-Anfrage, kann den Wert 1 oder 0 annehmen
  • data - Antwort auf die aufgerufene Methode, kann ein Skalar oder ein Objekt sein, abhängig vom Anfragetyp

Codebeispiel in PHP​

Wir empfehlen die Verwendung des Clients für PHP. Dieser Code ohne Verwendung des Clients dient nur zu Informationszwecken:

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

Codebeispiel in Perl​

Wir empfehlen die Verwendung des Clients für Perl. Dieser Code ohne Verwendung des Clients dient nur zu Informationszwecken:

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-Anfrage im Interface abrufen​

Um eine vollständige API-Anfrage im Task-Editor zu erhalten, gibt es die Funktion Show API query (API-Anfrage abrufen). Damit lässt sich das vollständige JSON für die Verwendung in der Methode addTask generieren.

API-Anfrage abrufen

Redis API​

Die Redis API ist eine alternative Methode zur Integration von A-Parser über einen Redis-Server und bietet in bestimmten Szenarien mehr Flexibilität und Leistung.

Mehr über die Redis API

⏩ Video-Übersicht zur Arbeit mit der API​