2011-03-06 10 views
7

sto usando Boilerpipe per estrarre il testo da url, utilizzando questo codice:estratto HTML URL

URL url = new URL("http://www.example.com/some-location/index.html"); 
String text = ArticleExtractor.INSTANCE.getText(url); 

String text contiene solo il testo della pagina html, ma ho bisogno di estrarre al codice html intero da.

C'è qualcuno che ha utilizzato questa libreria e sa come estrarre il codice HTML?

È possibile controllare lo demo page per ulteriori informazioni sulla libreria.

risposta

10

Per qualcosa di semplice come questo non si ha realmente bisogno di una libreria esterna:

URL url = new URL("http://www.google.com"); 
InputStream is = (InputStream) url.getContent(); 
BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
String line = null; 
StringBuffer sb = new StringBuffer(); 
while((line = br.readLine()) != null){ 
    sb.append(line); 
} 
String htmlContent = sb.toString(); 
+0

sun.net.www.protocol.http.HttpURLConnection $ HttpInputStream non può essere gettato a java.lang.String –

+0

@dotNet : Scusa, era fuorviante. Ho corretto la mia risposta. –

1

basta usare il KeepEverythingExtractor al posto del ArticleExtractor.

Ma questo sta utilizzando lo strumento sbagliato per il lavoro sbagliato. Quello che vuoi è solo scaricare il contenuto HTML di un URL (giusto?), Non estrarre il contenuto. Quindi perché usare un estrattore di contenuti?

+0

KeepEverythingExtractor non restituisce il codice HTML, restituisce il testo completo nella pagina HTML (collegamenti, ...) –

+0

@dotNET Dov'è la differenza ?! Questo * è * il codice HTML. –

1

con Java 7 e un trucco di scanner, è possibile effettuare le seguenti operazioni:

public static String toHtmlString(URL url) throws IOException { 
    Objects.requireNonNull(url, "The url cannot be null."); 
    try (InputStream is = url.openStream(); Scanner sc = new Scanner(is)) { 
     sc.useDelimiter("\\A"); 
     if (sc.hasNext()) { 
      return sc.next(); 
     } else { 
      return null; // or empty 
     } 
    } 
}