如何搭建java代理池爬虫?

最新资讯发布日期:2021-03-18

如何搭建java代理池爬虫?.png

一般做网络爬虫代理的IP需求比较大。由于在爬取网站信息的过程中,许多网站都做了反爬虫策略,可能每一个IP都做了频率控制。所以我们需要大量的代理IP来爬取网站。下面给大家介绍常见的获取ip方式以及想要搭建Java代理池爬虫的方法。

通过以下途径可以获得代理IP:

1、来自免费网站,质量很差,可以使用的IP很少。

2、付费买代理服务,品质极高。

3、自建代理服务器,稳定,但是需要服务器的大量资源。

Java自建代理池:

1、建立ParallelFlowable,并对提供免费代理IP的每个页面进行并行抓取。

image.png

2、抓取每个页面,返回List。

image.png

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);
                    }
                });

完整的流程图:

image.png

以上就是构建Java爬虫代理池的相关办法了,感兴趣的小伙伴不妨跟着小编学习搭建起来哦~

挂件 关闭
客服
二维码
客服二维码

加微信 领流量

大客户经理二维码

售前咨询,企业定制

专属客服竭诚为您服务