使用正則抓捕網(wǎng)上郵箱

這就是我們需要抓捕的網(wǎng)站。
實(shí)現(xiàn)思路:
1、使用java.net.URL對(duì)象,綁定網(wǎng)絡(luò)上某一個(gè)網(wǎng)頁(yè)的地址
2、通過(guò)java.net.URL對(duì)象的openConnection()方法獲得一個(gè)HttpConnection對(duì)象
3、通過(guò)HttpConnection對(duì)象的getInputStream()方法獲得該網(wǎng)絡(luò)文件的輸入流對(duì)象InputStream
4、循環(huán)讀取流中的每一行數(shù)據(jù),并由Pattern對(duì)象編譯的正則表達(dá)式區(qū)配每一行字符,取得email地址
下面是我們的代碼:
package cn.bdqn;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;//和網(wǎng)絡(luò)相關(guān)的操作import java.net.URL;import java.net.URLConnection;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 正則抓取郵箱 * @author happy * */public class Test { public static void main(String[] args) throws IOException { //1.1 創(chuàng)建一個(gè)url對(duì)象 URL url = new URL("https://www.douban.com/group/topic/8845032/"); //1.2 打開(kāi)連接 URLConnection conn = url.openConnection(); //1.3 設(shè)置連接網(wǎng)絡(luò)超時(shí)時(shí)間 單位為毫秒 conn.setConnectTimeout(1000 * 10); //1.4 通過(guò)流 操作讀取指定網(wǎng)絡(luò)地址中的文件 BufferedReader bufr = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; //1.5 匹配email的正則 String regex = "[a-zA-Z0-9_-]+@//w+//.[a-z]+(//.[a-z]+)?"; //1.6 使用模式的compile()方法生成模式對(duì)象 Pattern p = Pattern.compile(regex); //1. while((line = bufr.readLine()) != null) { Matcher m = p.matcher(line); while(m.find()) { System.out.println(m.group());// 獲得匹配的email } } }}這里主要是利用正則來(lái)匹配郵箱:
String regex = "[a-zA-Z0-9_-]+@//w+//.[a-z]+(//.[a-z]+)?";
[a-zA-Z0-9_-]只能包含字母、數(shù)字、下劃線(xiàn)、減號(hào),”+ ”的話(huà)就是匹配[a-zA-Z0-9_-]一次或多次,@后可以出現(xiàn)任何非單字符等價(jià)于[^a-zA-Z0-9_],他可以重復(fù)出現(xiàn)一次或多次,結(jié)束后必須要有/.是給.做轉(zhuǎn)義的,然后點(diǎn)后可以出現(xiàn)a到z之間的任意字符。
捕獲的結(jié)果如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注