换ip软件,代理ip软件,更改ip地址-智游代理
首页 IP软件套餐 HTTP代理套餐 API提取 使用帮助 新闻资讯 长效IP 注册 登录 实名验证

在线咨询

800819380 售前客服
在线客服,实时响应

客户经理:
13326404693

473197630 QQ群
473197630

微信客服

您的位置: 首页 > 新闻资讯 > 爬虫代理 > 正文

Java爬虫之匿名代理IP的获取

发布时间:2019年01月24日 来源:智游代理 www.zhiyoudaili.com

爬虫,AI一直是近年来为之关注的焦点,Java以自己独有的严格的语言约束和庞大且成熟的各种框架,成为企业一度的选择,也成为当今码农必知必会的编程语言。


诚然,Java仍然更多地用在WEB开发上,所以学会初级Java爬虫,也是在Java的技能道路上,多看了一处别样的风景。


环境准备:


1. 一个开发工具

2. MAVEN包管理环境

3. JAR:Jsoup、HTTPClient

4. 目标站点:某个代理网站


步骤:


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

image.png


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


private String getHTML(String url) {

        CloseableHttpClient httpClient = HttpClients.createDefault();

        HttpGet httpGet = new HttpGet(url);

        httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36");

        CloseableHttpResponse response;

        try {

            response = httpClient.execute(httpGet);

            HttpEntity responseEntity = response.getEntity();

            return EntityUtils.toString(responseEntity, "utf-8");

        } catch (IOException e) {

            e.printStackTrace();

        }

        return "";}


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

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


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

image.png


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

private void doParser(String html) {

        Document document = Jsoup.parse(html);

        Elements elements = document.select("tr.odd");

        for (Element element : elements) {

            String context = element.getAllElements().select("td").text();

            if (context.contains("高匿")) {

                int index_ip = context.indexOf(" ");

                String ip_text = context.substring(0, index_ip);

                String sub_string = context.substring(index_ip, context.length());

                sub_string = sub_string.trim();

                int index_port = sub_string.indexOf(" ");

                String port_text = sub_string.substring(0, index_port);

                System.out.println(ip_text + ":" + port_text);

            }

        }}

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


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

信息提取详解:

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

image.png


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


一、IP提取

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

image.png


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


一、 端口号的获取


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

image.png


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

image.png

     

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

image.png


今天的分享就到这里,希望对大家有所帮助。

转载注明来自:智游代理IP http://www.zhiyoudaili.com/

相关文章内容简介

1 哪种代理ip适合网络爬虫

现时代大数据兴起,网络成为了重要的部分,线上运营就有了大量的信息数据。网商竞争,市场调查,数据分析,如何获取?成就网络爬虫问世,通过网络爬虫采集才能获取到大量的数据信息。爬虫采集也不是那么简单就能爬取到数据,网站的自我保护意思,将信息保护防止流失也同样做出了相对的策略,使用了反爬虫机制。正常的用户访问网站浏览时间较长,访问也不会太过于频繁,终端网站如何对对网络爬虫作出判断的,爬虫采集需要频繁并发对服务器进行访问,访问停留很短,需要不停请求响应返回信息数据,服务器很快很能察觉发现,对其ip进行限制访问。使用代理ip隐藏真实ip,突破反爬虫机制,使爬虫采集畅通无阻。代理ip分为很多种类,那哪种代理ip适合网络爬虫?高质量优质短效代理ip,是一款专业爬虫的代理ip,高质量高匿极速,稳定绿色安全,短效3-6分钟,可选择失效或者时间切换ip,防止ip被封遭受限制,具有海量的ip存储的短效优质代理ip是网络爬虫采集的首选。... [阅读全文]

2 爬虫需要大量IP怎样解决

现阶段,许多网站的反爬虫对策基本都是依据识别到的IP来分辨的,在我们浏览这一网站的时候IP便会被记录,假如操作方法不当,便会被服务器评定这一IP为爬虫,便会限制或是禁止这一IP的继续访问。那么,爬虫需要大量IP怎样解决呢?爬虫被限制最普遍的根本原因是爬取的频率过快,超出了目标网站设定的时长,便会被该服务器禁止访问。因此,许多爬虫工作者都是会挑选代理IP来协助工作正常开展。有时候使用了代理IP,但还是会遇到IP不够用的情况。假如再次购入,成本会提高。可以采用以下方法尝试解决:1.降低爬取速度,削减IP或是其它资源的损耗,但如此会降低工作的效率,很有可能会影响到工作的速度。2.提高爬虫技术,将多余的流程削减,将程序的工作效率提高,如此还可以削减对IP或其它资源的损耗。假如通过这两个方法依然不能处理问题,就只有再次购入代理IP了。智游代理高匿稳定,海量IP任意选,爬虫解决反爬虫完全无压力。... [阅读全文]

热门标签

推荐阅读

  1. 12

    2018-11

    python爬虫需要了解的代理IP知识

    随着现在社会的境界快速发展,网络的发展也是日新月异,经济社会逐渐走向了信息社会,网络社会。

  2. 15

    2019-02

    网络蜘蛛安全隐患 web如何应对有害爬虫

    网络爬虫(Web Crawler),又称网络蜘蛛(Web Spider)或网络机器人(Web Robot),是一种按照一定的规则自动抓取万维网资源的程序或者脚本,已被广泛应用于互联网领域。

  3. 11

    2019-06

    企业爬虫为什么不能用免费代理ip

    在大数据的前提下,现在会用代理IP的人增多,本着有便宜不占王八蛋的心里,还是有很多用户不愿意使用付费的爬虫代理ip.而是选择网上公开的免费代理ip,尽管是完全免费,但是老话说得好

  4. 24

    2019-09

    增量补量以及爬虫代理ip提供商怎么选

    作为互联网从业者,无论是增量补量用的代理ip,还是爬虫代理ip,都需要用到海量的IP资源,但是我们百度一下会发现,鱼龙混杂的代理IP提供商,价格从99不限量包月到十几万一个月,这些IP资

  5. 06

    2020-05

    使用代理IP做爬虫的正确姿势

    没有被封过IP的爬虫工程师,肯定不是一个好的工程师。在爬虫工作的过程中,总是会遇到封IP的烦心事,今天这样爬,被封,明天那样爬,还是被封,到底要怎样爬呢,才不会被封。

  6. 08

    2020-01

    爬虫过程中的代理ip使用

    目前很多网站都会设置相对应的防爬虫机制,这是因为有一部分人在实际的爬虫主权过程中会进行恶意采集或者恶意攻击,通常情况下,防爬虫程序是通过IP来识别哪一些是机器人用户,因此可