2011-03-06 1 views
7

Я использую Boilerpipe для извлечения текста из URL, используя этот код:Извлечение HTML из URL

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

text струнных содержит только текст страницы HTML, но мне нужно доставать весь HTML код от него.

Есть ли кто-нибудь, кто использовал эту библиотеку и знает, как извлечь код HTML?

Для получения дополнительной информации о библиотеке вы можете узнать demo page.

ответ

10

Для чего-то же просто, как это вы на самом деле не нужны внешние библиотеки:

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 не может быть приведен к java.lang.String –

+0

@dotNet : Извините, это вводит в заблуждение. Я исправил свой ответ. –

1

Просто использовать KeepEverythingExtractor вместо ArticleExtractor.

Но это неправильный инструмент для неправильной работы. Вы хотите просто загрузить HTML-контент URL (правильно?), А не извлекать контент. Итак, зачем использовать экстрактор контента?

+0

KeepEverythingExtractor не возвращает HTML-код, он возвращает полный текст на странице HTML (ссылки, ...) –

+0

@dotNET Где разница? Это * * код HTML. –

1

С Java 7 и трюк сканера, вы можете сделать следующее:

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 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^