Domanda

E 'possibile scaricare i contenuti di un sito web, una serie di pagine HTML-dritto alla memoria senza scrivere su disco?

Ho un cluster di macchine con 24G di ogni installata, ma sto limitato da una quota disco a diverse centinaia MB. Pensavo reindirizzare l'wget uscita a qualche tipo di struttura in memoria senza memorizzare il contenuto di un disco. L'altra opzione è quella di creare la mia versione di wget ma può essere c'è un modo semplice per farlo con tubi

Anche ciò che sarebbe il modo migliore per eseguire il download in parallelo (cluster ha> 20 nodi). Non è possibile utilizzare il file system in questo caso.

È stato utile?

Soluzione

wget opzioni di download :

  
    

‘- file di O’

         

‘- Uscita-document = file’

         

I documenti non verranno scritti i file appropriati, ma tutti saranno concatenati tra loro e scritti in un file. Se ‘-’ è usato come lima, i documenti vengono stampati sullo standard output, disabilitando la conversione collegamento. (Usa ‘./-’ per stampare un file chiamato letteralmente ‘-’.)

  

Se si desidera leggere i file in un programma Perl, è possibile richiamare wget usando backticks.

A seconda di ciò che si davvero bisogno di fare, si potrebbe essere in grado di ottenere da solo utilizzando LWP :: 's get.

semplici
use LWP::Simple;
my $content = get("http://www.example.com/");
die "Couldn't get it!" unless defined $content;

Aggiornamento: che avevo idea è possibile implementare il proprio sistema di file in Perl utilizzando fusibili e Fuse.pm . Vedi anche Fuse :: InMemory .

Altri suggerimenti

Se a) sta già utilizzando Perl, b) vuole scaricare HTML, e c) analizzarlo, mi raccomando sempre LWP e HTML :: TreeBuilder .

Stai root? Si potrebbe utilizzare un tmpfs.

Re tua modifica: non sei CPU bound, non è necessario utilizzare ogni macchina. È possibile utilizzare xargs -n SOME_NUMBER per dividere la lista di URL di root, assumendo ci sono diversi.

Ma se siete appassionati di condivisione di memoria, è possibile impostare un memcache cluster e montarlo su ogni macchina con memcachefs .

wget <url> -O -

scriverà il contenuto di un URL sullo standard output, che possono poi essere catturato in memoria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top