我正在用Java写一个简单的网络爬虫。我希望它能够下载每秒尽可能多的页面。有没有一个包可以让Java中的异步HTTP web请求变得简单?我用过HttpURLConnection,但那是阻塞的。我也知道Apache的HTTPCore NIO中有一些东西,但我正在寻找更轻量级的东西。我尝试使用这个包,在多线程上使用HttpURLConnection获得了更好的吞吐量。
发布于 2010-12-08 21:06:41
通常,只要线程数低于1000,数据密集型协议就与传统阻塞I/O相比,在原始吞吐量方面往往比NIO执行得更好。至少客户端基于Apache 1使用的HttpClient基准(可能不完美,可能有偏差)的情况肯定是这样的
只要线程数适中(<250),最好使用带有线程的阻塞HTTP客户端
如果你非常确定你想要一个基于NIO的HTTP客户端,我可以推荐Jetty HTTP客户端,我个人认为它是目前最好的异步HTTP客户端。
1
发布于 2010-12-08 12:40:50
虽然这个用户没有问同样的问题,但您可能会发现他的问题的答案很有用:Asynchronous HTTP Client for Java
顺便说一句,如果你打算“每秒下载尽可能多的页面”,你应该记住爬虫可能会在不经意间使脆弱的服务器停止工作。您可能应该先阅读"robots.txt“和解释此文件的适当方式,然后才能在您自己的个人测试设置之外的任何东西上释放您的创作。
https://stackoverflow.com/questions/4384161
复制相似问题