Librerie di crawler Web Java


Volevo creare un crawler web basato su Java per un esperimento. Ho sentito che fare un crawler Web in Java era la strada da percorrere se questa è la prima volta. Tuttavia, ho due domande importanti.

  1. In che modo il mio programma "visiterà" o "si collegherà" alle pagine web? Si prega di dare una breve spiegazione. (Capisco le basi degli strati di astrazione dall'hardware fino al software, qui sono interessato alle astrazioni Java)

  2. Quali librerie dovrei usare? Mi presumo di aver bisogno di una libreria per la connessione a pagine Web, una libreria per il protocollo HTTP/HTTPS e una libreria per l'analisi HTML.

Author: Kara, 2012-07-01

11 answers

Questo è il modo in cui il tuo programma 'visita' o 'connetti' alle pagine web.

    URL url;
    InputStream is = null;
    DataInputStream dis;
    String line;

    try {
        url = new URL("http://stackoverflow.com/");
        is = url.openStream();  // throws an IOException
        dis = new DataInputStream(new BufferedInputStream(is));

        while ((line = dis.readLine()) != null) {
            System.out.println(line);
        }
    } catch (MalformedURLException mue) {
         mue.printStackTrace();
    } catch (IOException ioe) {
         ioe.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException ioe) {
            // nothing to see here
        }
    }

Questo scaricherà il sorgente della pagina html.

Per l'analisi HTML vedere questo

Date anche un'occhiata a jSpider e jsoup

 7
Author: Mohammad Adil, 2018-02-17 12:25:46

Crawler4j è la soluzione migliore per te,

Crawler4j è un crawler Java open source che fornisce una semplice interfaccia per la scansione del Web. È possibile impostare un crawler web multi-threaded in 5 minuti!

Anche visita. per ulteriori strumenti web crawler basati su java e una breve spiegazione per ciascuno.

 10
Author: cuneytykaya, 2016-09-07 06:18:20

Per analizzare il contenuto, sto usando Apache Tika .

 4
Author: Waji, 2012-12-10 22:40:34

In questo momento c'è un'inclusione di molti parser HTML basati su java che supportano la visita e l'analisi delle pagine HTML.

Ecco l'elenco completo del parser HTML con confronto di base.

 4
Author: Vishnu, 2014-11-24 10:49:48

Ti consiglio di utilizzare la libreria HttpClient. Puoi trovare esempi qui .

 2
Author: Benoit, 2012-07-01 13:58:45

Preferirei crawler4j. Crawler4j è un crawler Java open source che fornisce una semplice interfaccia per la scansione del Web. È possibile impostare un crawler web multi-threaded in poche ore.

 2
Author: Vivek Vermani, 2016-03-06 21:15:50

È possibile esplorare.apache droid o apache nutch per ottenere la sensazione di crawler basato su java

 0
Author: Sid, 2012-07-01 18:06:08

Sebbene utilizzato principalmente per applicazioni Web di Unit Testing, HttpUnit attraversa un sito Web, fa clic su link, analizza tabelle ed elementi del modulo e fornisce metadati su tutte le pagine. Lo uso per la scansione del Web, non solo per i test unitari. - http://httpunit.sourceforge.net /

 0
Author: fandang, 2014-02-18 17:50:25

Penso che jsoup sia migliore di altri, jsoup gira su Java 1.5 e versioni successive, Scala, Android, OSGi e Google App Engine.

 0
Author: Saeed Zarinfam, 2015-01-03 12:19:42

Ecco un elenco di crawler disponibili:

Https://java-source.net/open-source/crawlers

Ma suggerisco di usare Apache Nutch

 0
Author: sendon1982, 2017-01-26 07:04:27

Dai un'occhiata a questi progetti esistenti se vuoi imparare come può essere fatto:

Un tipico processo crawler è un ciclo costituito da recupero, analisi, estrazione di link ed elaborazione dell'output (memorizzazione, indicizzazione). Anche se il diavolo è nei dettagli, cioè come essere "educato" e rispettare robots.txt, meta tag, reindirizzamenti, limiti di velocità, canonicalizzazione URL, profondità infinita, tentativi, rivisitazioni, ecc.

Diagramma di flusso del collettore HTTP Norconex

Diagramma di flusso per gentile concessione di Norconex HTTP Collector.

 0
Author: rustyx, 2018-09-05 09:25:23