网页爬虫

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

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

 

如今有这样一个需求:获取指定数据文本文件或网页上的全部邮箱地址网页爬虫

下面咱们用代码实现一下:小程序

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

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

 

下面是代码实现:url

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());
            }
        }
    }
}

 

运行结果:spa

相关文章
相关标签/搜索