Ho avuto abbastanza tempo per farlo funzionare in modo affidabile per centinaia di migliaia di termini e potenzialmente milioni di pagine per fonte e ETL i dati risultanti in un database in modo automatico. Ho bisogno di eseguire le attività in Mesos su un programma ripetuto. Le lingue richieste sono Scala / Java.
Per l'acquisizione, ho bisogno di analizzare javascript, eseguire il rendering dei dati da ajax, lavorare con i cookie di tracciamento; ecc. al fine di raschiare i siti. Ho lavorato anche a uno strumento open source per fare questo. Ho scoperto e creato un'API estremamente semplice che circonda Selenium per questa attività con una configurazione serializzabile per la distribuzione. Lo strumento è plug and play per un webdriver.
Tuttavia, le scansioni si trovano costantemente nei guai perché si bloccano sempre nonostante siano isolate abbastanza bene e rimosse l'una dall'altra (specificando le posizioni della cache, riducendo al minimo le dimensioni della cache, non scaricando le immagini, ecc.).
Gli errori variano da phantomjs che restituisce un errore di pulizia e non riesce a continuare a bloccarsi in Chrome Driver nonostante non esaurisca la memoria secondo VisualVM. Infatti, l'utilizzo della memoria più elevato è stato del 25% e l'utilizzo della CPU al 50% utilizzando 3-5 singoli processi figlio.
Devo eseguire ogni termine in un contenitore? Come rendere affidabile il driver Web per un periodo di settimane o mesi? Esiste un'alternativa altrettanto generica?