Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java获取HTML内容的最快方法是什么?_Java_Inputstream_Bufferedinputstream - Fatal编程技术网

使用java获取HTML内容的最快方法是什么?

使用java获取HTML内容的最快方法是什么?,java,inputstream,bufferedinputstream,Java,Inputstream,Bufferedinputstream,我有这个,但我想知道是否有更快的方法: URL url=new URL(page); InputStream is = new BufferedInputStream(url.openConnection().getInputStream()); BufferedReader in=new BufferedReader(new InputStreamReader(is)); String tmp=""; String

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

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

网络可能是最大的开销,在Java代码方面你做不了多少。但使用至少要快得多:

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

记住关闭底层流。

如果需要处理html,请查找一些库。比如说

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

例如:

Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");

如果您像Tomasz建议的那样使用ApacheCommons IO的IOUtils,那么有一个更简单的方法:,或者它的首选同类方法,它使用一个字符集(当然,这需要事先知道资源的字符集)


此代码使用系统的默认字符集。。。只要页面内容使用相同的字符集就可以了。没错,IOUtils方法在一行中执行相同的操作,只是它使用了StringBuffer而不是StringBuilder+1,这很简单,而且可能足够快。如果没有,我想您可以读取Content-Length头并预先分配一个与内容大小完全相同的字节缓冲区,然后将字节数组传递给字符串构造函数。。。但这似乎太过分了。
String string = IOUtils.toString( new URL( "http://some.url" ));
String string = IOUtils.toString( new URL( "http://some.url" ), "US-ASCII" );