了解 RESTful 的都知道,POST 不是幂等操作,所以理论上每次请求的结果都未必一样,所以原则上是没有办法做“去重”操作的。其次,除了 GET 请求,其他 Method 都没有办法自动发现,一般都是手工构建出来的,使用者更应该自己去控制是否重复。
一般来说,爬虫只会抓取信息展示类的页面,所以基本只会处理 HTTP GET 方法的数据。但是对于某些场景,模拟 POST 等方法也是需要的。
Request request = new Request("http://example.com/item"); request.setMethod(HttpConstant.Method.POST); NameValuePair[] nameValuePair = new NameValuePair[](){ new BasicNameValuePair("id","100"),new BasicNameValuePair("tag","2")}; request.putExtra("nameValuePair", nameValuePair); spider.addRequest(request);
POST 的去重
从 0.6.2 版本开始,POST 默认不会去重,详情见:Issue 484。如果想要去重可以自己继承 DuplicateRemovedScheduler,重写 push 方法。
爬虫遇到的 Post 请求基本没有,所以大家也不用担心。如果遇到了,自己继承 DuplicateRemovedScheduler,重写 push 方法。