2012-07-01 16 views
11

Quería hacer un rastreador web basado en Java para un experimento. Escuché que crear un Web Crawler en Java era el camino a seguir si es la primera vez. Sin embargo, tengo dos preguntas importantes.Java Web Crawler Libraries

  1. ¿Cómo mi programa 'visitará' o 'conectará' a las páginas web? Por favor, da una breve explicación. (Entiendo los conceptos básicos de las capas de abstracción desde el hardware hasta el software, aquí estoy interesado en las abstracciones de Java)

  2. ¿Qué bibliotecas debo usar? Asumiría que necesito una biblioteca para conectarme a páginas web, una biblioteca para el protocolo HTTP/HTTPS y una biblioteca para analizar HTML.

Respuesta

7

así es como el programa de 'visita' o 'conectar' a las páginas 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 
     } 
    } 

Esto descargará la fuente de la página html.

Para análisis de HTML ver this

también echar un vistazo a jSpider y jsoup

+0

Entonces, ¿esto extraer información de una página, o simplemente ir a la página? Estoy intentando escribir un rastreador que tomará la información del usuario, vaya a maps.google.com, inserte la dirección y tome el tiempo de ruta y la longitud de la ruta y tráigala al programa. es posible? – Ungeheuer

+0

@Adrian eche un vistazo a la API de Google Maps: https://developers.google.com/maps/documentation/distance-matrix/start –

0

Puede explore.apache Nutch androide o Apache para conseguir la sensación de Java basada rastreador

7

Crawler4j es la mejor solución para usted,

Crawler4j es un rastreador de código abierto de Java que proporciona una interfaz simple para rastrear la web. ¡Puede configurar un rastreador web de subprocesos múltiples en 5 minutos!

También visit. para obtener más herramientas de rastreo web basadas en Java y una breve explicación de cada una.

0

Aunque se utiliza principalmente para aplicaciones web Unit Testing, HttpUnit atraviesa un sitio web, hace clic en enlaces, analiza tablas y elementos, y le da metadatos sobre todas las páginas. Lo uso para Web Crawling, no solo para Unit Testing. - http://httpunit.sourceforge.net/

2

Preferiría crawler4j. Crawler4j es un rastreador de código abierto de Java que proporciona una interfaz simple para rastrear la Web. Puede configurar un rastreador web multiproceso en pocas horas.

5

En este momento hay una inclusión de muchos analizadores de HTML basados ​​en Java que permiten visitar y analizar las páginas HTML.

Here's la comple la lista del analizador de HTML con comparación básica.

+1

@ Jean-FrançoisCorbett: He refinado mi respuesta ahora. – Vishnu

0

Creo que jsoup es mejor que otros, jsoup se ejecuta en Java 1.5 y superior, Scala, Android, OSGi y Google App Engine.