La scansione è qualcosa di più grande del semplice recupero del contenuto di un singolo URI. Se si desidera semplicemente recuperare il contenuto di alcune pagine, non vi è alcun reale beneficio dall'usare qualcosa come Crawler4J
.
Diamo un'occhiata a un esempio. Supponi di voler eseguire la scansione di un sito Web. I requisiti sarebbero:
- di base Dare URI (home page)
- Prendi tutti i URI da ogni pagina e recuperare il contenuto di quelli troppo.
- Spostare in modo ricorsivo per ogni URI che si recupera.
- Recupera il contenuto solo degli URI che si trovano all'interno di questo sito Web (potrebbero esserci URI esterni che fanno riferimento a un altro sito Web, non ne abbiamo bisogno).
- Evitare la scansione circolare. La pagina A ha URI per la pagina B (dello stesso sito). La pagina B ha l'URI per la pagina A, ma abbiamo già recuperato il contenuto della pagina A (la pagina ha un collegamento per la pagina
Home
, ma abbiamo già ottenuto il contenuto della pagina Home
quindi non visitarlo più).
- L'operazione di ricerca per indicizzazione deve essere multithreading
- Il sito Web è vasto. Contiene molte pagine. Vogliamo solo recuperare 50 URI a partire dalla pagina
Home
.
Questo è uno scenario semplice. Prova a risolverlo con Jsoup
. Tutte queste funzionalità devono essere implementate da te. Crawler4J o qualsiasi microstruttura per crawler di questo tipo, dovrebbe o dovrebbe avere un'implementazione per le azioni precedenti. Le qualità forti di Jsoup
brillano quando si decide cosa fare con il contenuto.
Diamo un'occhiata ad alcuni requisiti per l'analisi.
- ottenere tutti i paragrafi di una pagina
- Prendi tutte le immagini
- rimuovere i tag non validi (tag che non rispettano completamente le
HTML
specifiche)
- tag Rimuovere di script
Questo è dove Jsoup
viene a giocare. Certo, c'è qualche sovrapposizione qui. Alcune cose potrebbero essere possibili con entrambi Crawler4J
o Jsoup
, ma questo non li rende equivalenti. È possibile rimuovere il meccanismo di recupero del contenuto da Jsoup
e rimanere uno strumento straordinario da utilizzare. Se Crawler4J
rimuoverebbe il recupero, perderebbe metà della sua funzionalità.
Ho utilizzato entrambi nello stesso progetto in uno scenario reale. Ho sottoposto a scansione un sito sfruttando i punti di forza di Crawler4J
per tutti i problemi menzionati nel primo esempio. Poi ho passato il contenuto di ogni pagina che ho recuperato a Jsoup
, al fine di estrarre le informazioni di cui avevo bisogno. Potrei non aver usato l'uno o l'altro? Sì, potrei, ma avrei dovuto implementare tutte le funzionalità mancanti.
Quindi la differenza, Crawler4J
è un crawler con alcune semplici operazioni di analisi (è possibile estrarre le immagini in una riga), ma non c'è implementazione per le query complesse CSS
. Jsoup
è un parser che fornisce una semplice API per le richieste HTTP
. Per qualcosa di più complesso non c'è implementazione.