Ga naar de hoofdinhoud

API-overzicht

A-Parser ondersteunt beheer via API, wat het mogelijk maakt om de scraper te integreren in complexe systemen (bijvoorbeeld SaaS), door de mogelijkheden van A-Parser te gebruiken vanuit andere programma's en scripts.

De API is geïmplementeerd op basis van het HTTP-protocol en JSON-serialisatie van gegevens en kan vanuit elke programmeertaal worden gebruikt

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

Resultaat:

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

Voorbeelden van gebruik

  • Aanroepen en verwerken van enkelvoudige of batch-query's naar een van de scrapers, bijvoorbeeld:
    • Een lijst met links ophalen van Google op aanvraag
    • Tekst vertalen via Google Translate/Yandex Translate/DeepL
    • Domeinparameters ophalen, zoals registratiedatum, Alexa-rank en vele andere
  • Taken in de wachtrij plaatsen en resultaten ophalen
  • Beheer van de taakwachtrij en controle van de taakstatus
  • Automatisering van een scraper-farm

Kant-en-klare clients

Voor A-Parser zijn er kant-en-klare clients beschikbaar die het werken met de API vereenvoudigen:

NodeJS

Perl

PHP

Python

Vorming van een verzoek

Interactie met A-Parser vindt plaats via het HTTP-protocol met JSON-serialisatie van het verzoek en het antwoord. Om een verzoek aan de API te doen, moet u een POST-verzoek uitvoeren naar het adres:

http://IP-server:9091/API

De volgende headers moeten verplicht worden meegegeven:

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

Als request body wordt een JSON-geserialiseerde structuur gebruikt:

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

Waarbij:

  • password - wachtwoord voor A-Parser
  • action - de aangeroepen API-methode
  • data - verzoekparameters, specifiek voor elk type verzoek, volledige lijst en beschrijving hier

Het antwoord ziet er in algemene vorm als volgt uit:

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

Waarbij:

  • success - succes van het API-verzoek, kan de waarde 1 of 0 aannemen
  • data - antwoord op de aangeroepen methode, kan een scalair of een object zijn, afhankelijk van het type verzoek

Voorbeeldcode in PHP

We raden aan om de client voor PHP te gebruiken; deze code zonder gebruik van de client wordt ter informatie verstrekt:

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

Voorbeeldcode in Perl

We raden aan om de client voor Perl te gebruiken; deze code zonder gebruik van de client wordt ter informatie verstrekt:

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-verzoek verkrijgen in de interface

Om een volledig API-verzoek te verkrijgen in de Task Editor is er de functie Show API query (API-verzoek ophalen). Hiermee kunt u de volledige JSON verkrijgen voor gebruik in de methode addTask

API-verzoek ophalen

Redis API

Redis API is een alternatieve manier om A-Parser te integreren via een Redis-server, wat zorgt voor meer flexibiliteit en prestaties in bepaalde scenario's

Meer over Redis API

⏩ Video-overzicht van het werken met de API