我有一个蜘蛛类,在用户请求蜘蛛网站的内容。每次搜索都会加载大约30个网站,将其搜索到相关信息,然后将这些信息标准化。
我用curl用php编写了这篇文章,因为php缺乏多任务处理,我想切换到java(我知道多进程curl不适合我的需求)。我需要一个可以发布/获取、接收和设置cookies以及修改http头的http客户端。
我发现htmlunit看起来很漂亮,但也超出了我的需求,而且由于包比较大,我一分钟内会有很多hundread请求,所以我不想有一个过多的解决方案减慢我的服务器速度。
您认为这是一个问题吗?您是否有其他建议来替换java中的curl?我应该使用java curl绑定吗?这是一个效率和服务器负载的问题。

最佳答案

或许看看Apache Http Client
您可以为每个线程创建一个httpclient,并使用它来执行您的请求

while (running) {

HttpClient client = new DefaultHttpClient();
HttpGet GET = new HttpGet("mydomain.com/path.html");
HttpResponse response = client.execute(GET);
// do stuff with response

}

更好的是,如果您在请求之间重用httpclient,它将记住以前的响应返回的cookie,并自动将它们应用到下一个请求。从这个意义上说,一个httpclient为一个http会话建模。
所以如果你是
 client.execute(GET1);
  // cookies received in response
  client.execute(GET2);
  // the second get will send the cookies back received from GET1 response.

然后,您可以看看java的executorservice,它将使放置spider作业和运行多个线程变得容易。

10-07 16:37
查看更多