2011-03-06 16 views
7

używam Boilerpipe wyodrębnić tekst z adresem URL, używając tego kodu:Extract HTML z URL

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

text String zawiera tylko tekst strony html, ale trzeba wyodrębnić do całego kodu html z tego.

Czy jest ktoś, kto użył tej biblioteki i wie, jak wyodrębnić kod HTML? Aby uzyskać więcej informacji o bibliotece, można sprawdzić numer demo page.

Odpowiedz

10

Na coś tak prostego jak to naprawdę nie potrzebują zewnętrznej biblioteki:

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 nie mogą być oddane do java.lang.String –

+0

@dotNet : Przepraszam, to było mylące. Poprawiłem moją odpowiedź. –

1

wystarczy użyć KeepEverythingExtractor zamiast ArticleExtractor.

Ale używa to niewłaściwego narzędzia do nieodpowiedniej pracy. To, czego chcesz, to pobrać zawartość HTML z URL-a (prawda?), A nie wyodrębniać treści. Dlaczego więc używać ekstraktora zawartości?

+0

KeepEverythingExtractor nie zwraca kodu HTML, zwraca pełny tekst na stronie HTML (linki, ...) –

+0

@dotNET Gdzie jest różnica ?! Ten * jest * kodem HTML. –

1

Z Java 7 i podstęp skanera, można wykonać następujące czynności:

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