3.8. Crawler service

Il servizio ha il compito di interfacciarsi con i siti web visitati dalla piattaforma e recuperare le informazioni pubblicate via web. In particolare, riceve una richiesta di accesso al sito specificato dal Conductor e in risposta fornisce la pagina acquisita, codificandola in formato Base64, e interagisce con l’object store per l’archiviazione del contenuto della pagina e/o dello screenshot renderizzato dal browser.

I dettagli relativi agli endpoint e ai JSON da fornire sono disponibili agli url /doc e /redoc in formato Swagger/OpenAPI .

In particolare, il webscraping-service si aspetta di ricevere un JSON contenente i seguenti parametri:
  • url: contiene l’url da visitare, anche privo di schema http/https

  • crawlingMode: httpStream | htmlSource - contiene la modalità di crawling

  • saveObject: False | True - indica se l’oggetto deve essere salvato nell’object store o semplicemente restituito in risposta alla richiesta

  • saveScreenshot: False | True - indica se lo screenshot della pagina deve essere salvato nell’object store.

{
    "url": "www.cnr.it",
    "crawlingMode": "htmlSource",
    "saveObject": True,
    "saveScreenshot": False,
}

Relativamente alle modalità di crawling, htmlSource prevede la renderizzazione della pagina mediante un browser pilotato dal Selenium-hub e l’estrazione dal browser del sorgente HTML.

Nel caso invece delle richieste httpStream, il servizio di webscraping si connette alla porta TCP sulla quale ascolta il web server analizzato e recupera lo stream HTTP riveniente dalla richiesta GET /url .

Questo metodo ha il vantaggio di essere estremamente veloce e di richiedere minori risorse computazionali ma ha lo svantaggio di non costruire la pagina in maniera corretta, in presenza di contenuti dinamici.

Di conseguenza il metodo htmlSource è da preferire poichè la pagina viene costruita utilizzando un browser pilotato da selenium-hub e richiedendo al browser di fornire il sorgente HTML della pagina costruita in fase di navigazione, simulando pertanto la stessa esperienza che avrebbe un navigatore accedendo al sito.