记录:一个爬虫程序的优化过程
这两天手痒用jsoup撸了个抓取图片爬虫 初版: ThreadPoolExecutor executor = new ThreadPoolExecutor(6, 6, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>(200)); for (int j = 1; j <= 总页数; j++) { executor.execute(()->{ // 1.抓取网页,获得图片url // 2.根据url保存图片 // 3.保存后记录成功和失败的信息到本地txt }); } 程序看起来没有什么问题,只开了6线程操作,开始没敢开太多线程,怕被网站拉黑。。 但是运行起来太慢了,一晚上只爬了10个多G,目前分析问题主要有两点: 1.并发操作本地txt,会拖慢单个任务执行的速度 2.线程没有充分利用 首先看下操作文件方法吧,所用方法来自NIO: Files.write(log, attr.getBytes("utf8"), StandardOpenOption.APPEND); 通过查看源码发现,该方法...











