2012-01-30 10 views
38

Quiero analizar un sitio web simple y obtener información de ese sitio web.Sitio web de Parse HTML con JAVA

Solía ​​analizar archivos XML con DocumentBuilderFactory, traté de hacer lo mismo para el archivo html pero siempre entraba en un bucle infinito.

URL url = new URL("http://www.deneme.com"); 
    URLConnection uc = url.openConnection(); 

    InputStreamReader input = new InputStreamReader(uc.getInputStream()); 
    BufferedReader in = new BufferedReader(input); 
    String inputLine; 

    FileWriter outFile = new FileWriter("orhancan"); 
    PrintWriter out = new PrintWriter(outFile); 

    while ((inputLine = in.readLine()) != null) { 
     out.println(inputLine); 
    } 

    in.close(); 
    out.close(); 

    File fXmlFile = new File("orhancan"); 
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
    Document doc = dBuilder.parse(fXmlFile); 


    NodeList prelist = doc.getElementsByTagName("body"); 
    System.out.println(prelist.getLength()); 

¿Cuál es el problema? ¿O hay alguna forma más fácil de eliminar datos de un sitio web para una etiqueta html determinada?

+0

En primer lugar, puede utilizar una cadena en lugar de un archivo. ¿Dónde entra en un ciclo infinito? Tal vez debido a la corriente de entrada de la url que no parece terminar, tienes ese problema. –

Respuesta

78

Hay una forma mucho más fácil de hacer esto. Sugiero usar JSoup. Con JSoup puede hacer cosas como

Document doc = Jsoup.connect("http://en.wikipedia.org/").get(); 
Elements newsHeadlines = doc.select("#mp-itn b a"); 

O si desea que el cuerpo:

Elements body = doc.select("body"); 

O si desea que todos los enlaces:

Elements links = doc.select("body a"); 

Ya no es necesario para obtener conexiones o manejar flujos Sencillo. Si alguna vez usaste jQuery, es muy similar a eso.

+0

Primero, ¡gracias! Pero, ¿qué es # mp-itn b a? – CanCeylan

+1

# mp-itn es solo un contenedor con 'id =" mp-itn '' –

+1

Ver mi edición. Comprender cómo funcionan los selectores de CSS realmente te ayudaría. –

19

Definitivamente JSoup es la respuesta. ;-)