最新资讯发布日期:2021-03-18
一般做网络爬虫代理的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爬虫代理池的相关办法了,感兴趣的小伙伴不妨跟着小编学习搭建起来哦~
专属客服竭诚为您服务