Java 爬虫解决readline 读取缓慢问题
2017-03-29 01:47
369 查看
传统的使用URLconnection做连接之后通常使用in.readline()来获取网页代码。显而易见的是这种方法效率奇低。我简单的做了一下比较
Python time:0.205786745268 s =205ms
传统 readline() time: 1975ms
charBuffer time: 265 ms
try { // 将string转成url对象 URL realUrl = new URL(surl); // 初始化一个链接到那个url的连接 URLConnection connection = realUrl.openConnection(); // 开始实际的连接 connection.connect(); // 初始化 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(connection.getInputStream())); // 用来临时存储抓取到的每一行的数据 String line; long startMili=System.currentTimeMillis();// 当前时间对应的毫秒数 // while ((line = in.readLine()) != null) { // // 遍历抓取到的每一行并将其存储到result里面 // Log.i(">>line",line); // result += line + "\n"; // } CharBuffer bos = CharBuffer.allocate(20480); int read = 0; StringBuilder builder = new StringBuilder(); try { while (in.read(bos) != -1) { bos.flip(); builder.append(bos.toString()); } } catch (IOException e1) { e1.printStackTrace(); } //System.out.println(builder.toString()); result=builder.toString(); //写入byte数组中。再依次读取出来即可。 //System.out.print(result); long endMili=System.currentTimeMillis();// 当前时间对应的毫秒数 Log.i(">>time1","总耗时为:"+(endMili-startMili)+"毫秒"); } catch (Exception e) { Log.i(">>>parsing","发送GET请求出现异常!" + e); e.printStackTrace(); } // 使用finally来关闭输入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } finally { TAG=true; } } }
孰优孰劣简单易得,在能够大致预见网页大小的时候,很明显使用charBuffer效率高出了10多倍。
github 地址 https://github.com/panyunyi97/CUFE_TRIP 欢迎观光&& star相关文章推荐
- 安卓(JAVA)读取Mp3文件中的歌曲信息(及readLine()出现乱码问题的解决方法)
- Java读取文件 解决中文乱码问题
- java 记事本读取文本文件的乱码问题,终于解决了 O(∩_∩)O~ 多谢 uu老师帮助
- 解决Java读取properties文件中文乱码的问题
- Java 读取ANSI文件中文乱码问题解决方式
- 解决NLPIR-ICTCLAS2014分词系统词库过大,造成读取缓慢问题
- java读取系统时间写入mysql数据库时,滞后八小时问题的解决 - ghostgarlic的专栏 - CSDNBlog
- java中读取excel文件中字符串乱码问题解决方法
- 【问题解决】java中为什么不建议使用DataInputStream 的readLine()方法
- 解决 JAVA读取本地ANSI文件乱码问题
- Java底层代码实现单文件读取和写入(解决中文乱码问题)
- 解决Java读取properties文件的中文问题的新办法(不使用native2ascii.exe及其他工具)
- 解决Java读取properties文件的中文问题的新办法(不使用native2ascii.exe及其他工具)
- java中org.xml.sax不能读取xml回车换行的问题解决(android)
- 关于java 读取propterties 文件的疑惑 和问题的解决
- 解决linux下java读取串口之权限问题 No permission to create lock file.
- 【Java IO知识】读取中文乱码问题解决
- 解决linux下java读取串口之权限问题 No permission to create lock file. 分类: LINUX 2010-07-13 20:51 2006人阅读 评论(0) 收藏
- Java解析DBF文件,错误Failed to parse Number: For input string: "-.---" 或读取不出数据或乱码问题都在这里解决
- 解决Java读取File乱码问题