程序很小,但是功能却很强大,很有意思。当你输入一个网页的url地址之后,就能把网页中的全部电子邮箱地址揪出来。主要运用了URL类和正则表示式。不过程序有一个bug。当电子邮箱的地址跨越两行时不能很好的处理。当然也有一个不太理想的解决方案:就是把网页内全部读入一个字符串变量中再进行处理。
下面是程序的代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmailSpider {
public static void main(String[] args) {
if (args.length > 0) {
try {
URL url = new URL(args[0]);//创建url对象
InputStream in = url.openStream();
BufferedReader r=new BufferedReader(new InputStreamReader(in));
String line="";
while((line=r.readLine())!=null){
parse(line);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void parse(String line) {
Pattern p = Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+");
Matcher m = p.matcher(line);
while(m.find()) {
System.out.println(m.group());
}
}
}
本文介绍了一个小型程序,能够从网页中批量提取电子邮箱地址,利用URL类和正则表达式实现。程序存在处理跨行邮箱地址的局限,通过读取网页内容至字符串变量进行改进。
252

被折叠的 条评论
为什么被折叠?



