2021-03-18
如何搭建java代理池爬虫?
一般做网络爬虫代理的IP需求比较大。由于在爬取网站信息的过程中,许多网站都做了反爬虫策略,可能每一个IP都做了频率控制。所以我们需要大量的代理IP来爬取网站。下面给大家介绍常见的获取ip方式以及想要搭建Java代理池爬虫的方法。通过以下途径可以获得代理IP:1、来自免费网站,质量很差,可以使用的IP很少。2、付费买代理服务,品质极高。3、自建代理服务器,稳定,但是需要服务器的大量资源。Java自建代理池:1、建立ParallelFlowable,并对提供免费代理IP的每个页面进行并行抓取。2、抓取每个页面,返回List。3、通过检查每个页面所获得的代理IP列表,判断是否可用。flatMap(new Function<List<Proxy>, Publisher<Proxy>>() {
@Override public Publisher<Proxy> apply(List<Proxy> proxies) throws Exception {
if (proxies == null) return null;
List<Proxy> result = proxies .stream()
.parallel()
.filter(new Predicate<Proxy>() {
@Override public boolean test(Proxy proxy) {
HttpHost httpHost = new HttpHost(proxy.getIp(), proxy.getPort(), proxy.getType());
return HttpManager.get().checkProxy(httpHost);
}
}).collect(Collectors.toList());
return Flowable.fromIterable(result);
}
})4、依次保存到proxyList。subscribe(new Consumer<Proxy>() {
@Override public void accept(Proxy proxy) throws Exception {
log.debug("Result Proxy = "+proxy.getType()+"://"+proxy.getIp()+":"+proxy.getPort());
proxy.setLastSuccessfulTime(new Date().getTime());
ProxyPool.proxyList.add(proxy);
}
});完整的流程图:以上就是构建Java爬虫代理池的相关办法了,感兴趣的小伙伴不妨跟着小编学习搭建起来哦~