0

我有这个,但我想知道是否有更快的方法:

        URL url=new URL(page);
        InputStream is = new BufferedInputStream(url.openConnection().getInputStream());
        BufferedReader in=new BufferedReader(new InputStreamReader(is));
        String tmp="";
        StringBuilder sb=new StringBuilder();
        while((tmp=in.readLine())!=null){
            sb.append(tmp);
        }
4

3 回答 3

5

可能网络是最大的开销,在 Java 代码方面您无能为力。但是使用IOUtils至少实现起来要快得多:

String page = IOUtils.toString(url.openConnection().getInputStream());

记得关闭底层流。

于 2012-08-01T21:40:37.057 回答
3

如果您需要使用 html 进行操作,请查找一些库。例如jsoup

jsoup 是一个用于处理真实世界 HTML 的 Java 库。它提供了一个非常方便的 API 用于提取和操作数据,使用最好的 DOM、CSS 和类似 jquery 的方法。

例子:

Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");
于 2012-08-01T21:51:02.580 回答
0

如果您按照 Tomasz 的建议使用 Apache Commons IO 的 IOUtils,那么还有一个更简单的方法:toString(URL),或者它的首选表亲,它们采用字符集(当然,这需要提前知道资源的字符集)。

String string = IOUtils.toString( new URL( "http://some.url" ));

或者

String string = IOUtils.toString( new URL( "http://some.url" ), "US-ASCII" );
于 2013-10-03T17:24:02.900 回答