【问题标题】:Get web page content to String is very slow将网页内容获取到 String 非常慢
【发布时间】:2011-08-20 09:17:42
【问题描述】:

我使用 HttpURLConnection.getInputStream() 下载了一个网页并将内容转换为字符串,我执行以下方法:

String content="";
isr = new InputStreamReader(pageContent);
br = new BufferedReader(isr);
try {
    do {
            line = br.readLine();
            content += line;
        } while (line != null);
        return content;
    } catch (Exception e) {
        System.out.println("Error: " + e);
        return null;
    }

页面的下载速度很快,但是获取内容到 String 的处理速度很慢。还有另一种方法可以更快地将内容转换为字符串?

我将其转换为字符串以插入到数据库中。

【问题讨论】:

  • 怎么下载才快呢?您正在部分下载并同时附加到字符串。
  • pageContent 包含像 InputStream 一样的下载内容。我在这段代码中所做的是将 InputStrem 转换为字符串。
  • InputStream获取内容就是所谓的下载。
  • 抱歉。是的,就是这样慢,但是……我不知道其他方法。

标签: java webpage bufferedreader


【解决方案1】:

按字节数读入缓冲区,而不是像行这样的任意东西。仅此一项就应该是加快速度的良好开端,因为读者不必找到行尾。

【讨论】:

    【解决方案2】:

    请改用StringBuffer

    编辑示例:

    StringBuffer buffer=new StringBuffer();
    
    for(int i=0;i<20;++i)
      buffer.append(i.toString());
    
    String result=buffer.toString();
    

    【讨论】:

      【解决方案3】:

      使用 blob/clob 将内容直接放入数据库。 逐行构建字符串并将其放入数据库的任何具体原因??

      【讨论】:

      • 是的,我需要在插入数据库之前获取页面的链接。
      【解决方案4】:

      我正在使用 jsoup 来获取页面的指定内容,这是一个基于 jquery 和 jsoup 的 web 演示来捕获网页的任何内容,您应该为需要捕获的页面内容指定 ID 或 Class :http://www.gbin1.com/technology/democenter/20120720jsoupjquerysnatchpage/index.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-11
        • 2018-07-16
        • 1970-01-01
        • 1970-01-01
        • 2010-12-23
        • 2010-11-06
        • 1970-01-01
        • 2021-07-15
        相关资源
        最近更新 更多