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