在搜索引擎进行搜索,我们能够发现有很多免费的代理IP可以提供给我们使用。那么,我们能够如何利用这些免费的IP呢?
1、爬取代理IP
爬取步骤:
关于爬取代理IP,我们用国内某免费代理网站来作为爬取案例 。首先写个爬虫获取该网站内的Ip吧。
先对 国内Http代理 标签页面进行爬取,解析页面使用的Jsoup ,这里大概代码如下
private List<IPBean> crawl(String api, int index){
String html = HttpUtils.getResponseContent(api + index);
System.out.println(html);
Document document = Jsoup.parse(html);
Elements eles = document.selectFirst("table").select("tr");
for (int i = 0; i < eles.size(); i++){
if (i == 0) continue;
Element ele = eles.get(i);
String ip = ele.children().get(1).text();
int port = Integer.parseInt(ele.children().get(2).text().trim());
String typeStr = ele.children().get(5).text().trim();
int type;
if ("HTTP".equalsIgnoreCase(typeStr))
type = IPBean.TYPE_HTTP;
else
type = IPBean.TYPE_HTTPS;
IPBean ipBean = new IPBean(ip, port, type);
ipList.add(ipBean);
}
return ipList;
}
对某些不明白的变量,可以参考我Github
其中关键的就是css选择器语法,这里需要注意的是不要乱加空格,不然会导致找不到出现空指针。
css选择器语法具体参考这里 , 这里就不讲解了。
爬取的信息包括 ip地址、端口号、和代理类型(http或https), 这三个信息我放在IPBean这个类里面。
2、过滤
上面爬取完成后,还要进一步过滤,筛选掉不能使用的。
筛选大概原理就是先设置上代理,然后请求某个网页,若成功则代表此代理ip有效。
其中请求成功的标志我们可以直接获取请求的返回码,若为200即成功。
/**
* 检测代理ip是否有效
*
* @param ipBean
* @return
*/
public static boolean isValid(IPBean ipBean) {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ipBean.getIp(), ipBean.getPort()));
try {
URLConnection httpCon = new URL("https://www.baidu.com/").openConnection(proxy);
httpCon.setConnectTimeout(5000);
httpCon.setReadTimeout(5000);
int code = ((HttpURLConnection) httpCon).getResponseCode();
System.out.println(code);
return code == 200;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
注意这里要设置两个超时,连接超时和读取超时。连接超时还好,它默认只是有点长;然而读取超时如果不设置,它好像就会一直阻塞着。
时间设置为5s就够了,毕竟如果ip有效的话,会很快就请求成功的。这样过滤后,就得到有效的代理ip了。
这样我们就搭建了自己的一个代理IP池了,是不是看起来也没那么复杂呢?
相关文章内容简介
1 免费IP如何抓取利用?
在搜索引擎进行搜索,我们能够发现有很多免费的代理IP可以提供给我们使用。那么,我们能够如何利用这些免费的IP呢? 1、爬取代理IP 爬取步骤: 关于爬取代理IP,我们用国内某免费代理网站来作为爬取案例∵。首先写个爬虫获取该网站内的Ip吧。 先对∵国内Http代理∵标签页面进行爬取,解析页面使用的Jsoup∵,这里大概代码如下 priva... [阅读全文]
最新标签
推荐阅读
07
2019-11
正向代理、反向代理的对比
代理服务器可以分为正向代理、反向代理,使用的时候,大家可能感受不出来具体有什么不同。但是这两种其实存在不少差异,使用场景也不一样。
31
2019-10
爬虫要怎么设计运行?
互联网时代,网络爬虫是常规操作了,比较常见的就有像搜索引擎蜘蛛,它通过每天抓取不同网站的信息,当用户进行搜索的时候,才能够进行返回有效信息。黑洞代理下面为大家介绍爬虫要怎
31
2019-10
Urllib库怎么使用?
用pyhton来进行爬虫是很多爬虫工作者的选择,大数据在各行各业都发挥着作用,企业也对数据分析给予更多的关注,黑洞代理今天给大家介绍Urllib库的使用。
31
2019-10
网络爬虫为什么会出现乱码?
代理IP让爬虫变得更加方便,降低了准入门槛,让很多人也开始学习如何编写爬虫程序。在爬虫的时候,会出现很多情况,黑洞代理跟大家分享当你的爬虫出现乱码如何解决。
热门文章
在线咨询
客户经理
公众号
关注公众号,免费领试用
大客户