Come posso ottenere crawler4j per scaricare tutti i link da una pagina più rapidamente?

StackOverflow https://stackoverflow.com/questions/8804607

  •  26-10-2019
  •  | 
  •  

Domanda

Quello che faccio è:
- scansione della pagina di
- prendere tutti i link della pagina, li mette in una lista
- avviare un nuovo crawler, che le visite ogni link della lista
- scaricarli

Ci deve essere un modo più veloce, dove posso scaricare direttamente i link quando ho visitare la pagina? Thx!

È stato utile?

Soluzione

crawler4j fa automaticamente questo processo per voi. È prima di aggiungere una o più pagine di semi. Queste sono le pagine che sono prima recuperati ed elaborati. crawler4j poi estrae tutti i collegamenti in queste pagine e li passa alla funzione shouldVisit. Se si vuole veramente a strisciare tutti loro questa funzione dovrebbe semplicemente restituire true su tutte le funzioni. Se si desidera solo per le pagine di ricerca per indicizzazione all'interno di un dominio specifico è possibile controllare l'URL e restituire true o false in base a questo.

Gli URL che le vostre dichiarazioni shouldVisit vero, sono poi scaricati da fili cingolati e lo stesso processo viene eseguito su di loro.

Il codice di esempio qui è un buon esempio per iniziare.

Altri suggerimenti

L'approccio generale sarebbe quello di separare la scansione, e le attività che trasferiscono nel thread di lavoro separati, con un numero massimo di thread, a seconda delle esigenze di memoria (ad esempio RAM massima che si desidera utilizzare per la memorizzazione di tutte queste informazioni).

Tuttavia, crawler4j già ti dà questa funzionalità. Scaricando scissione e strisciando in thread separati, si tenta di massimizzare l'utilizzo della connessione, abbattendo quanti più dati sia la vostra connessione in grado di gestire, e come i server che fornisce le informazioni può inviare. La limitazione naturale per questo è che, anche se si spawn 1.000 Threads, se i server sono solo dato il contenuto in 0.3k al secondo, che ancora solo 300 KB al secondo che sarete in download. Ma tu semplicemente non hanno alcun controllo su questo aspetto, ho paura.

L'altro modo per aumentare la velocità è quello di eseguire crawler su un sistema con un tubo più grasso a Internet, dal momento che la tua velocità massima di download è, sto cercando di indovinare, il fattore limitante per quanto velocemente si può ottenere dati attualmente. Ad esempio, se si stesse eseguendo la scansione su un'istanza AWS (o una qualsiasi delle piattaforme applicative cloud), si potrebbe trarre beneficio da loro connessioni ad altissima velocità dorsali, e ridurre la quantità di tempo necessario per eseguire la scansione di una raccolta di siti web espandendo in modo efficace la larghezza di banda di gran lunga al di là di quello che si vuole ottenere in una connessione di casa o in ufficio (a meno che non si lavora in un ISP, che è).

E 'teoricamente possibile che, in una situazione in cui il vostro tubo è estremamente grande, inizia la limitazione a diventare la velocità massima di scrittura del disco, per tutti i dati che si sta salvando per storage su disco locale (o di rete).

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