Java 利用爬虫爬取一些代理IP

在使用爬虫进行一些数据爬取的时候,难免会碰上IP被封的情况,因此提前做个准备,写了一个简单的程序先爬取一些代理IP。

public void downIP() throws IOException {
        // 需要爬取IP信息的网站地址
        String url = "http://www.66ip.cn/areaindex_1/1.html";
        // 动态模拟请求数据
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet(url);
        // 模拟浏览器浏览(user-agent的值可以通过浏览器浏览,查看发出请求的头文件获取)
        httpGet.setHeader("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36");
        CloseableHttpResponse response = httpclient.execute(httpGet);
        // 获取响应状态码
        int statusCode = response.getStatusLine().getStatusCode();
        try {
            HttpEntity entity = response.getEntity();
            // 如果状态响应码为200,则获取html实体内容或者json文件
            if (statusCode == 200) {
                // 转一下码
                String html = EntityUtils.toString(entity, "gb2312");
                // 提取HTML
                Document doc = Jsoup.parse(html);
                // 下面是根据页面html代码来编写的,根据观察,发现这个网页上的数据都在table表格里,因此根据table标签获取数据
                Elements ulList = doc.select("table");
                // 观察后发现,页面里存在三个table表格,而我们只需要第三个表格里的数据// 获取第三个表格中tr标签里的数据
                Elements liList = ulList.get(2).select("tr");
                for (Element item : liList) {
                    //这里直接打印出这些数据,需要的可以存进数据库
                    System.out.println(item.text());
                }
                // 消耗掉实体
                EntityUtils.consume(response.getEntity());
            } else {
                // 消耗掉实体
                EntityUtils.consume(response.getEntity());
            }
        } finally {
            response.close();
        }
    }

直接在主函数里运行这个方法就🆗了。

 

 

 

使用这段代码需要用到几个jar包:

 

之后就可以设置代理IP了

System.getProperties().setProperty("proxySet", "true");
System.getProperties().setProperty("http.proxyHost", "61.135.155.82"); // 设置ip
System.getProperties().setProperty("http.proxyPort", "443");// 设置端口号

 

posted @ 2020-08-05 16:52  但为君故。  阅读(1264)  评论(0编辑  收藏  举报