您的位置:首页 > 新闻资讯 >文章内容
通过Java爬虫来获取代理IP
来源:互联网 作者:admin 时间:2019-05-17 11:21:58

  通过Java爬虫来获取代理IP,这方法也不是很难,不过可能大家经常使用的是Python,使用Java比较少,不过不用担心,小编这就为大家介绍下通过Java爬虫来获取代理IP的方法。


  爬虫,AI一直是近年来为之关注的焦点,Java以自己独有的严格的语言约束和庞大且成熟的各种框架,成为企业一度的选择,也成为当今码农必知必会的编程语言。诚然,Java仍然更多地用在WEB开发上,所以学会初级Java爬虫,也是在Java的技能道路上,多看了一处别样的风景。


  环境准备:


  1. 一个你使用的很顺手的开发工具,(我用IDEA);


  2. MAVEN包管理环境;


  3. JAR:Jsoup、HTTPClient;


  4. 目标站点:某某代理;


  5. 一个已经看过上一期爬虫文章,同样期待着这一期的你;


  开工:


  一、 创建WeChat类,并添加JAR包,如下图:


通过Java爬虫来获取代理IP


  二、编辑WeChat类,定义一个用于发起HTTP请求的然后返回HTML文本页面的方法:


通过Java爬虫来获取代理IP


  1、如上图所示,使用HTTPClient创建Http发起者,使用HttpGet,创建GET请求的对象,封装该对象,并使用HTTPClient将其发送到目标站点,获得返回值类型为HTTPResponse,对该响应使用EntityUtils工具统一格式化编码后,将其返回。


  PS:被EntityUtils工具处理后,该响应不再为HTTPResponse对象,而是进行了编码后的该Response对象的文本。类型为String。


  三、对第二步中的方法进行测试,确保其正确无误,测试及结果如下:


通过Java爬虫来获取代理IP


  四、承接第二步,我们继续编写用于解析HTML文本的方法,在第二步中我们使用HttPClient发起了GET请求,这里,我们要使用Jsoup解析HTML文本,通过对根节点和子节点的解析,准确获取目标信息,代码如下:


通过Java爬虫来获取代理IP


  如上所示:定义了名为doParser()的无返回值方法,以String类型的形参HTML为目标,使用Jsoup.parser()方法,将其转化为Document对象,使用select() CSS选择器,查找该HTML中所有的class为“odd”的<tr>标签(在该网页中:class为“odd”的<tr>标签和没有class的<tr>标签是一半一半所以这里只是选择了当前网页的一半的IP,但这拿来使用足矣)。


  Select()选择器查找到class为odd的tr标签后,返回Elements对象,使用for each循环遍历得到该Elements中的所有单个element,使用if过滤掉非高匿的IP,从此处开始,正式进入本文的核心环节,也是爬虫的难点所在信息提取!


  信息提取详解:


  在if条件句中,首先打印出过滤了非高匿IP后的信息,如图:


通过Java爬虫来获取代理IP


  诚然,没有价值的信息很多,我们需要做文本清洗,剥离出有价值的IP和端口必要信息,将其他繁杂信息舍去~~~


  IP提取(要点)


  分析单行文本可知,若想提取出IP,该行首次出现的“ ”(空格)符号是分割的重点,此处我们使用indexOf()方法,获得第一次出现的“ ”(空格)符号的下标所在,再根据下标,使用substring()方法,将其剥离出来,如图:


通过Java爬虫来获取代理IP


  这样我们就拿到了IP地址;


  端口号的获取(难点)


  端口号的获取让我纠结了许久,这也是这篇文章迟迟才出的原因,如果你有更好的办法请不吝赐教。


  原本的思路是在API文档中找到一个可以查找当前字符串中某一字符第二次出现的位置并返回下标,然而并没有找到,不是返回最后一次的就是返回第一次的,我百思不得解,一个final的String类竟然不会有这样的方法?为何?这说明该类下的所有已发布方法足矣处理任何String的问题,所以,我开始尝试用不相干的方法,制造合理的利用条件,思路如下:


通过Java爬虫来获取代理IP


  首先我们来看,在第一步剥离了IP地址后,如果想再次使用IndexOf()方法这样去返回第一个“ ”(空格)字符的下标,然后再根据获得的下标切割去得到关键信息的话,显然IP地址是不应该再存在的,因为在IP地址和port之间已经有一个 “ ”(空格)字符了。所以解决办法第一步,调用substring()方法,使获得的第一个“ ”(空格)字符的下标作为切割的起始下标,字符串的长度为末尾下标,这样我们就得到了一个新的字符串,如下:


通过Java爬虫来获取代理IP


  但是这仍然不是最适合的剥离环境,因为根据“ ”(空格)字符的下标作为判断依据的话,那么我们还要除去首位的空格(不难发现,每一个端口之前是有一个空格的,仔细看图),调用String.trim()方法,除去字符串首位的空格,得到全新的完美字符串,这时再使用提取IP时的方法就可以得到关于IP和Port的信息,如图:


通过Java爬虫来获取代理IP


  以上介绍了通过Java爬虫来获取代理IP,仅供参考的,也许你有更加简洁的方法,也可以分享出来。


相关文章内容简介
推荐阅读
  • 14 2019-05
    专业的代理IP具有质量保障

    专业的代理IP具有质量保障,在电子商务这个竞争激烈的行业,价格从不同地点到国家变化很大。在这个没有边界与限制的网络环境中,我们如何跟上价格趋势并保持竞争力?

  • 13 2021-02
    ip代理都是从什么地方扫出来的

    由于开python培训有讲过爬虫的缘故,这个问题已经被ask无数次了,一般问的基友也都是爬虫防ban用的,那么在此,我把我个人尝试过的代理渠道都写一下。总体来讲,质量好的都不便宜,便宜的

  • 05 2020-10
    为什么使用动态ip软件

    对于一般人来说,代理IP可能一文不值,根本不知道它是什么,用来做什么;而对于从事互联网工作的人来说,它好比狙击步枪的瞄准镜,有它没它差距非常大。下面跟小编简单了解一下,为什么

  • 14 2020-04
    使用代理ip让爬虫效率更高

    爬虫在数据采集方面效果比较好,比如可以采集几万、上百万网页数据进行分析,带来极有价值的数据,那么使用代理ip之后能不能让爬虫有更高的效率呢?

  • 29 2019-01
    如何查询我们的IP地址?使用代理可以更换大量的IP吗?

    一般上网是不需要知道所使用的是什么IP地址,但有时候我们需要知道上网的IP地址,进行设置或者其他一些原因。特别是外网IP地址,大家更是不知道,因为许多人使用的是局域网,那么如何查

  • 25 2021-01
    营销用哪个代理IP好

    代理IP很多人都不陌生,尤其是网络营销人员。主要是通过更换IP,束缚IP的限制,达到更好的工作效果。个人用户也可以通过代理IP软件,保证上网安全,保护个人隐私。

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部