获取公网IP
最近想获取动态公网ip,发现https://mip.chinaz.com这个网站靠谱,结果就想着JAVA爬虫把IP地址爬出来,百度了很多帖子,多数用正则,但跑之后的结果为空,后来还是截取字符串的方式取出了IP地址:
public static void paChong() {
//爬取内容地址
URL url = null;
//创建连接
URLConnection conn = null;
//字节输入流
InputStream is = null;
//字节转换为字符流
InputStreamReader isr = null;
//缓冲流
BufferedReader br = null;
//爬取内容存储的容器
String str = null;
//明确你要爬取内容的地址
try {
//java中的异常处理机制 Java中的异常是有责任制的 不是所有的异常都往外抛
url = new URL("https://mip.chinaz.com");
//创建连接
conn = url.openConnection();
//使用IO流
//字节流 每次只能读取一个字节的内容,可以保证内容的完整性,但是效率很低
is = conn.getInputStream();
//将字节流升级为字符流,每次可以读取一个字符的内容
isr = new InputStreamReader(is);
//将字符流转为字符缓冲流,使用缓冲流的时候要特别注意,最后一次用完了要关闭才能将里面的内容全部读到
//否则你就要使用自动刷新
br = new BufferedReader(isr);
//读取一行内容
while((str = br.readLine()) != null){
if(str.contains("您的IP:")){
String s = str;
//获得第一个点的位置
int index = str.indexOf("span");
//根据第二个点的位置,截取 字符串。得到结果 result
String result = s.substring(index + 19);
StringBuffer sb = new StringBuffer(result);
while (true) {
int index1 = sb.indexOf("</span></h4>");
if (index1 == -1) {
break;
}
sb.delete(index1, index1 + "</span></h4>".length());
}
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null){
//关闭流
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
yyds,奥利给,萨瓦迪卡@MC枫少
sb.toString()即为公网IP地址
public static void paChong() {
//爬取内容地址
URL url = null;
//创建连接
URLConnection conn = null;
//字节输入流
InputStream is = null;
//字节转换为字符流
InputStreamReader isr = null;
//缓冲流
BufferedReader br = null;
//爬取内容存储的容器
String str = null;
//明确你要爬取内容的地址
try {
//java中的异常处理机制 Java中的异常是有责任制的 不是所有的异常都往外抛
url = new URL("https://mip.chinaz.com");
//创建连接
conn = url.openConnection();
//使用IO流
//字节流 每次只能读取一个字节的内容,可以保证内容的完整性,但是效率很低
is = conn.getInputStream();
//将字节流升级为字符流,每次可以读取一个字符的内容
isr = new InputStreamReader(is);
//将字符流转为字符缓冲流,使用缓冲流的时候要特别注意,最后一次用完了要关闭才能将里面的内容全部读到
//否则你就要使用自动刷新
br = new BufferedReader(isr);
//读取一行内容
while((str = br.readLine()) != null){
if(str.contains("您的IP:")){
String s = str;
//获得第一个点的位置
int index = str.indexOf("span");
//根据第二个点的位置,截取 字符串。得到结果 result
String result = s.substring(index + 19);
StringBuffer sb = new StringBuffer(result);
while (true) {
int index1 = sb.indexOf("</span></h4>");
if (index1 == -1) {
break;
}
sb.delete(index1, index1 + "</span></h4>".length());
}
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null){
//关闭流
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
yyds,奥利给,萨瓦迪卡@MC枫少
sb.toString()即为公网IP地址