正则表达式:网页爬虫

这是对正则表达式的一个小应用,爬取指定网页的指定内容。这里用的是一个博客网页,抓取邮箱到集合里。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo2 {

    /**
     * @param args
     * @throws IOException
     */

    /*
     * 网页爬虫:其实就一个程序用于在互联网中获取符合指定规则的数据。 爬取邮箱地址。
     */
    public static void main(String[] args) throws IOException {
        List<String> list = getMailsByWeb();
        for (String mail : list) {
            System.out.println(mail);
        }
    }

    public static List<String> getMailsByWeb() throws IOException {

        URL url = new URL("http://blog.sina.com.cn/s/blog_515617e60101e151.html");
        BufferedReader bufIn = new BufferedReader(new InputStreamReader(
                url.openStream()));
        // 对读取的数据进行规则的匹配。从中获取符合规则的数据.
        String mail_regex = "\\w+@\\w+(\\.\\w+)+";

        List<String> list = new ArrayList<String>();
        Pattern p = Pattern.compile(mail_regex);

        String line = null;

        while ((line = bufIn.readLine()) != null) {

            Matcher m = p.matcher(line);
            while (m.find()) {
                // 3,将符合规则的数据存储到集合中。
                list.add(m.group());
            }

        }

        return list;
    }

}
posted @ 2014-04-26 22:29  .stone_  阅读(292)  评论(0编辑  收藏  举报