第五天、实现一个java小爬虫

时间:2021-12-22 16:17:21
import java.net.URL;
import java.net.HttpURLConnection;

import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;

/**
* Description:
* 解析http://www.ip138.com/,获取所需要的ip和地址。
*
* @author Lee
* */

public class ReptileDemo {

/**
* Description:
* 连接上目标url,获取该网页的内容(html)。
*
* @param Url 目标网页的URL
* @return content 返回网页的内容,没有连接上网页则返回null
* */

public static String getContentByURL(String Url){
String content = null;
URL url = null;
HttpURLConnection conn = null;

try{
//使用目标网址,获取一个url实例
url = new URL(Url);
//url返回一个http协议的url连接
conn = (HttpURLConnection)url.openConnection();
//设置连接超时
conn.setConnectTimeout(5000);
//设置为HTTP方法为GET
conn.setRequestMethod("GET");
//表明接受所有类型的文件
conn.setRequestProperty("Accept","*/*");
//连接资源
conn.connect();

//获取响应码
System.out.println(conn.getResponseCode());
try(
//获取输出流
InputStream input = conn.getInputStream();
Scanner sc = new Scanner(input,"gb2312")){

while(sc.hasNext()){
content+=sc.nextLine()+"\n";
}

//System.out.println(content);
}catch(IOException e){
e.printStackTrace();
}

}catch(IOException e){
e.printStackTrace();
}finally{
//断开连接
conn.disconnect();
}

return content;
}

/**
* Description:
* 解析网页内容,获取需要的ip
*
* @param content 网页内容
* @return ip 返回内容中的ip,没有找到则返回null
* */

public static String getIpByContent(String content){

String ip = null;
int index;
if((index=content.indexOf(":["))!=-1){
String subContent = content.substring(index+2);

if((index=subContent.indexOf("]"))!=-1)
ip = subContent.substring(0,index);
}

return ip;
}

/**
* Description:
* 解析网页内容,获取地址
*
* @param contetn 网页内容
* @return pos 返回网页内容中的地址,没有找到则返回null
* */

public static String getPosByContent(String content){
String pos = null;

int index;
if((index=content.indexOf("自:"))!=-1){
String subContent = content.substring(index+2);

if((index=subContent.indexOf("</c"))!=-1)
pos = subContent.substring(0,index);
}

return pos;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String content = getContentByURL("http://1212.ip138.com/ic.asp");
if(content!=null){
String ip=getIpByContent(content),pos=getPosByContent(content);
if(ip!=null&&pos!=null)
System.out.println(ip+" "+pos);
else
System.out.println("没有找到内容!");
}else{

System.out.println("连接不上网页!");
}
}


}