hermescenter / monitorapa

Lo sviluppo continua su https://github.com/MonitoraPA/monitorapa/
https://monitora-pa.it
Other
27 stars 21 forks source link

Point2 ricerca analytics con regex e poi selenium #11

Closed Mte90 closed 2 years ago

Mte90 commented 2 years ago

Viene utilizzato selenium https://github.com/hermescenter/monitorapa/blob/main/point2.py#L19 ma si potrebbe usare requests per ottenere il codice html della pagina e fare una ricerca per un file analytics.js. Se il file non è trovato viene messo in un altra coda di quelli incerti su cui poi viene lanciato selenium per fare approfondimenti.

Questo dovrebbe migliorare le prestazioni visto che farà una sola richiesta e invece di qualche giorno è capace che in ora li elabora tutti.

Che ne pensi @Shamar, dopotutto il codice è tuo.

Mte90 commented 2 years ago

Se poi ci aggiungiamo async https://daniele.tech/2021/11/come-fare-uno-scraper-asincrono-in-python/ e ne facciamo 10 a botta sicuramente si fa ancora più prima.

Lo dico perché ho provato la differenza che da qualche ora diventano minuti nell'elaborare 20k pagine.

Shamar commented 2 years ago

Come spiegato in chat, l'uso di regex è stata la prima cosa che ho provato, ma produceva una valanga di falsi negativi perché Google Analytics può essere aggiunto in molti modi diversi.

Lasciare fare al browser rende molto più resilienti i test (il browser implementa euristiche molto compresse per indovinare cosa cerca l'utente) e più generale l'infrastruttura (possiamo scrivere check di non compliance GDPR diversi semplicemente aggiungendo nuovi file js nella cartella check/).

Per parallelizzare l'esecuzione del point2 potremmo aggiungere un ulteriore argomento opzionale alla linea di comando (come ha fatto @Anulo2) per indicare un numero di elementi da analizzare a partire dallo start_index, ed in questo modo lanciare il comando su chunk diversi in parallelo.

Tuttavia non darei a questa attività alcuna priorità al momento: lasciamo che il tempo di verifica di tutte le PA diventi un problema (ad esempio perché la stampa ci chiede costanti aggiornamenti per tenere l'opinione pubblica informata) prima di risolverlo. ;-)

Premature optimization is the root of all evil.