直接上代码了。这里只是爬取首页的,爬取别的页面只需要加个参数,循环一下就可以了!
package mobile.phone.number;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* java爬取网站电话号码
* @author 张智远
*
*/
public class GetPhoneNumber {
//Java程序的入口
public static void main(String[] args) {
//目标网址
BufferedReader br=null;
PrintWriter pw=null;
String path="http://taohaoma.com/mobile/number";
try {
//创建一个URL对象
URL url=new URL(path);
//打开网络链接
URLConnection urlconn=url.openConnection();
//创建一个指定的存储文件
FileWriter fw=new FileWriter("D:/phone.txt");
//创建一个缓冲字符输出流
pw=new PrintWriter(fw);
//创建一个输入流
//InputStream is=urlconn.getInputStream();
//将字节流转为字符流
// InputStreamReader isr=new InputStreamReader(is);
//字符缓冲流
br=new BufferedReader(new InputStreamReader(urlconn.getInputStream()));
//声明一个字符串来接受读取到的内容
String str=null;
//手机号码的正则表达式 电话号码是13451247854
String regex="1[13456789]\\d{9}";
//将给定的正则表达式编译成一个模式
Pattern p=Pattern.compile(regex);
//循环按行读取内容
while((str=br.readLine())!=null) {
//正则表达式
//创建一个指定模式的匹配器
Matcher m= p.matcher(str);
//循环匹配
while(m.find()) {
//使用输出流写到指定位置
pw.println(m.group());
}
}
System.out.println("获取完成");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
pw.close();
}
}
}