2012-03-22 128 views
8

Quiero leer el texto de una página web. No quiero obtener el código HTML de la página web. He encontrado este código:¿Cómo leer un texto de una página web con Java?

try { 
     // Create a URL for the desired page 
     URL url = new URL("http://www.uefa.com/uefa/aboutuefa/organisation/congress/news/newsid=1772321.html#uefa+moving+with+tide+history");  

     // Read all the text returned by the server 
     BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
     String str; 
     while ((str = in.readLine()) != null) { 
      str = in.readLine().toString(); 
      System.out.println(str); 
      // str is one line of text; readLine() strips the newline character(s) 
     } 
     in.close(); 
    } catch (MalformedURLException e) { 
    } catch (IOException e) { 
    } 

pero este código me da el código HTML de la página web. Quiero obtener el texto completo dentro de esta página. ¿Cómo puedo hacer esto con Java?

+1

Simplemente analiza el texto de las etiquetas HTML. Desde allí puede encontrar la información que desea y extraerla de allí. –

+0

Si está buscando HTML a DOM, http://stackoverflow.com/questions/457684/reading-html-file-to-dom-tree-using-java puede ayudarlo. –

+2

FYI - Usted está llamando a in.readLine() dos veces por iteración, por lo que en realidad se salta todas las líneas impares. (Solo pensé que debería señalar el error en este código ya que es uno de los primeros resultados de una búsqueda en Google al leer páginas web con Java). – JPProgrammer

Respuesta

13

es posible que desee echar un vistazo a jsoup para esto:

String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>"; 
Document doc = Jsoup.parse(html); 
String text = doc.body().text(); // "An example link" 

Este ejemplo es un extracto de uno en su sitio.

0

Tendría que tomar el contenido que obtiene con su código actual, luego analizarlo y buscar las etiquetas que contienen el texto que desea. Un analizador de sax sería muy adecuado para este trabajo.

O si no es un texto en particular, simplemente elimine todas las etiquetas para que quede solo con el texto. Supongo que podrías usar regexp para eso.

4

Use JSoup.

Podrá analizar el contenido utilizando los selectores de estilo css.

En este ejemplo se puede tratar

Document doc = Jsoup.connect("http://www.uefa.com/uefa/aboutuefa/organisation/congress/news/newsid=1772321.html#uefa+moving+with+tide+history").get(); 
String textContents = doc.select(".newsText").first().text(); 
0

También puede usar HtmlCleaner jar. A continuación se muestra el código.

HtmlCleaner cleaner = new HtmlCleaner(); 
TagNode node = cleaner.clean(url); 

System.out.println(node.getText().toString()); 
Cuestiones relacionadas