Java爬虫(五)-- httpClient进阶:使用代理(详细解析)

一、前言

好久没有写博客,趁着难得的空闲时间更新一波。前面几期讲到的主要包括了爬虫开发中的页面获取、页面解析两个方面的知识,套用二八原则,可以解决80%的工作。但是其他的20%的工作,就可能要用到我们80%的时间和精力去研究。这个就是我接下去几期要讲的。这期主要是讲一些实际场景下可能需要用到的httpClient设置,大都是我在实际开发中需要用到的,都算是一些小知识点,但是还是希望能能够记录总结一下。

接下去的博文都会标注写文章时参考的资料,以便参考。(感觉跟写论文一样,2333~)

二、代理

代理是爬虫技术中很重要的一项。因为有一些网站会有相应的安全策略。例如检测一段时间内,某个IP地址的访问次数,如果访问频率过高,说明你不是正常访客,然后禁止你这个IP的访问。

应对这种机制有两种手段:

  1. 放慢抓取速度,减小对目标网站的访问压力
  2. 设置代理IP,实现高频率抓取,但是这需要多个稳定的代理IP。

代理ip资源可以自己去写爬虫去爬代理网站,去验证可用性,当然这种方式不稳定,而且可用的ip资源并不是很多。你也可以搭建自己的代理服务器。还有些爬虫每天的抓取任务可能需要消耗10多万的ip资源,这个时候一般是需要使用一些商业的代理ip商的服务了。

当然在本文中,不会涉及如何搭建代理服务器和如何获取ip资源。主要介绍如何在httpClient中配置ip。如果以后有机会涉及到,再写文章吧。

三、实战

由于httpClient十分灵活,设置代理也有很多种方式。

3.1 设置httpClient

  • 最简单的一种:
// proxyHost -- 代理ip; proxyPort -- 端口号
HttpHost proxy = new HttpHost("proxyHost", proxyPort, "HTTP");
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet get = new HttpGet(url);
CloseableHttpResponse response = httpclient.execute(proxy, get);

这种方式要注意一点:new HttpHost()是支持指定协议类型的,但是httpClient不默认支持socks协议,所以如果我们把上面代码中的协议改成new HttpHost("proxyHost", proxyPort, "SOCKS"),会报错。

> org.apach
  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值