码迷,mamicode.com
首页 > 其他好文 > 详细

一个采集邮箱的网络爬虫(听毕老师讲的)

时间:2014-11-19 21:59:30      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:http   io   ar   os   sp   java   for   文件   数据   

package 案例;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class NetSplider {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
/**
* 网络爬虫:根据一定的规则从网络源或者本地源寻找并挖掘与规则相匹配的数据 1,读取文件,通过本地文件或者网络url 2,匹配并挖掘数据
*/
// 定义规则(正则表达式)
String regex = "\\w+@\\w+(\\.\\w+)+";
// List<String> listByLocal=getMailByLocal(regex);
List<String> listByNet = getMailByNet(regex);
PrintWriter pw=new PrintWriter((new FileWriter("G:\\workstation\\正则表达式\\src\\案例\\list.txt")),true);
// BufferedWriter bw = new BufferedWriter(new FileWriter(
// "G:\\workstation\\正则表达式\\src\\案例\\list.txt"));
for (String mail : listByNet) {
if(mail != null) {
pw.println(mail);
// pw.flush();
// bw.write(mail);
}
System.out.println(mail);
}
}

// 通过给出的url挖掘数据
private static List<String> getMailByNet(String regex) throws IOException {
// 给出url,并定义URL对象
String str_url = "http://bbs.tianya.cn/post-enterprise-401802-1.shtml";// 在此输入url地址
URL url = new URL(str_url);

// 打开url链接
URLConnection uc = url.openConnection();
// 获取并读取数据流
BufferedReader buffin = new BufferedReader(new InputStreamReader(uc
.getInputStream()));

// 获取功能,定义列表存储数据
Pattern p = Pattern.compile(regex);
List<String> list = new ArrayList<String>();
String line = null;
while ((line = buffin.readLine()) != null) {
Matcher m = p.matcher(line);
while (m.find()) {
list.add(m.group());
}
}
// 关闭资源
buffin.close();
return list;
}

// 通过给出本地路径挖掘数据
private static List<String> getMailByLocal(String regex) throws IOException {
// 读取流定义并读取文件
BufferedReader buffin = new BufferedReader(new FileReader(""));// 在此输入本地文件名
String line = null;

// 获取功能
Pattern p = Pattern.compile(regex);
List<String> list = new ArrayList<String>();
while ((line = buffin.readLine()) != null) {
Matcher m = p.matcher(line);
while (m.find()) {
list.add(m.group());
}
}
buffin.close();
return list;
}

}

一个采集邮箱的网络爬虫(听毕老师讲的)

标签:http   io   ar   os   sp   java   for   文件   数据   

原文地址:http://www.cnblogs.com/jamsbwo/p/4109114.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!