網頁爬蟲

最近在回顧正則表達式,正好想起一個比較有意思的小程序:爬蟲。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

相關文章
相關標籤/搜索