java 获得外网ip

本文介绍了一种利用Java库JSoup从网站抓取信息的方法,以获取本机的公网IP地址。通过连接到特定网址并解析返回的HTML文档,可以提取出所需的IP信息。

原理:

先用JSoup访问www.ip138.com,从页面中提取出本机的公网ip。

要在工程中加入JSoup包

代码如下:


[java]  view plain copy
  1. import java.io.IOException;  
  2.   
  3. import org.jsoup.Connection;  
  4. import org.jsoup.Jsoup;  
  5.   
  6. public class Test {  
  7.       
  8.     /** 
  9.      * 得到本机的外网ip,出现异常时返回空串"" 
  10.      * @return 
  11.      */  
  12.     private static String getPublicIP() {  
  13.         String ip = "";  
  14.           
  15.         org.jsoup.nodes.Document doc = null;  
  16.         Connection con = null;  
  17.   
  18.         // 连接 www.ip138.com 网页  
  19.         con = Jsoup.connect("http://iframe.ip138.com/ic.asp").timeout(10000);   
  20.   
  21.         try {  
  22.             doc = con.get();  
  23.               
  24.             // 获得包含本机ip的文本串:您的IP是:[xxx.xxx.xxx.xxx] 来自:中国  
  25.             org.jsoup.select.Elements els = doc.body().select("center");  
  26.             for (org.jsoup.nodes.Element el : els) {  
  27.                 ip = el.text();   
  28.             }  
  29.               
  30.             // 从文本串过滤出ip,用正则表达式将非数字和.替换成空串""  
  31.             ip = ip.replaceAll("[^0-9.]""");   
  32.         } catch (IOException e) {  
  33.             e.printStackTrace();  
  34.             return ip;  
  35.         }  
  36.           
  37.         return ip;  
  38.     }  
  39.       
  40.       
  41.     public static void main(String[] args) {  
  42.           
  43.         String str = getPublicIP();  
  44.           
  45.         System.out.println(str);  
  46.   
  47.     }  
  48.   
  49. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值