网页爬虫

最近在回顾正则表达式,正好想起一个比较有意思的小程序:爬虫。

爬虫,百度百科是这样说的:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫

 

现在有这样一个需求:获取指定数据文本文件或网页上的所有邮箱地址

下面我们用代码实现一下:

首先,我们准备了这样的一份本地数据:mail.txt

wefdvavxzfaf zhangsan@sina.com
farefavdareraweqaee2
sdfdsaa yanping@163.com adf
sdfae
WEFEW
fae

 

下面是代码实现:

package com.shindo.java.regex;
import java.io.*;
import java.net.*;
import java.util.regex.*;
/**
 * 网页爬虫(蜘蛛)
 * 需求:获取指定数据文本文件或网页上的所有邮箱地址
 */
public class WebCrawler {
    public static void main(String[] args)throws Exception{
        getMails();
//        getMials_1();
    }
    
    /*
     * 读取本地文本文件,获取其中所有邮箱地址
     */
    public static void getMails()throws Exception{
        //读取本地文件
        BufferedReader buf = new BufferedReader(new FileReader("F:\\mail.txt"));
        
        String line = null;
        //定义邮箱的正则表达式
        String mailreg = "\\w+@\\w+(\\.\\w+)+";

        //将mailreg转换为Pattern对象
        Pattern p = Pattern.compile(mailreg);
        
        //一行行读取
        while((line = buf.readLine())!= null ){
            Matcher m = p.matcher(line);//对每一行进行匹配
            while(m.find()){
                System.out.println(m.group());//取数据
            }
        }
    }
    
    /**
     * 对网页中的数据进行筛选,爬出所有邮箱地址
     */
    public static void getMials_1()throws Exception{
        //获取网页链接
        URL url = new URL("网页地址");
        URLConnection conn = url.openConnection();
        
        BufferedReader bufIn = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        
        String line = null;
        
        String mailreg = "\\w+@\\w+(\\.\\w+)+";
        
        Pattern p = Pattern.compile(mailreg);
        
        while((line = bufIn.readLine()) != null){
            Matcher m = p.matcher(line);
            while(m.find()){
                System.out.println(m.group());
            }
        }
    }
}

 

运行结果:

 

posted @ 2016-03-21 16:42  shindoyang  阅读(307)  评论(0编辑  收藏  举报