一个简单java爬虫爬取网页中邮箱并保存
此代码为一十分简单网络爬虫,仅供娱乐之用。
java代码如下:
1 package tool; 2 import java.io.BufferedReader; 3 import java.io.File; 4 import java.io.FileWriter; 5 import java.io.InputStreamReader; 6 import java.io.Writer; 7 import java.net.URL; 8 import java.net.URLConnection; 9 import java.sql.Time; 10 import java.util.Scanner; 11 import java.util.regex.Matcher; 12 import java.util.regex.Pattern; 13 public class Ma { 14 public static void main(String[] args) throws Exception {// 本程序内部异常过多为了简便,不一Try,直接抛给虚拟机 15 long StartTime = System.currentTimeMillis(); 16 System.out.println("-- 欢迎使用小刘简易网页爬虫程序 --"); 17 System.out.println(""); 18 System.out.println("--请输入正确的网址如http://www.baidu.com--"); 19 Scanner input = new Scanner(System.in);// 实例化键盘输入类 20 21 String webaddress = input.next();// 创建输入对象 22 File file = new File("E:" + File.separator + "爬虫邮箱统计文本.txt");// 实例化文件类对象 23 24 // 并指明输出地址和输出文件名 25 26 27 Writer outWriter = new FileWriter(file);// 实例化outWriter类 28 29 URL url = new URL(webaddress);// 实例化URL类。 30 31 URLConnection conn = url.openConnection();// 取得链接 32 33 BufferedReader buff = new BufferedReader(new InputStreamReader( 34 35 conn.getInputStream()));// 取得网页数据 36 37 String line = null; 38 int i=0; 39 String regex = "\\w+@\\w+(\\.\\w+)+";// 声明正则,提取网页前提 40 41 Pattern p = Pattern.compile(regex);// 为patttern实例化 42 43 outWriter.write("该网页中所包含的的邮箱如下所示:\r\n"); 44 while ((line = buff.readLine()) != null) { 45 46 Matcher m = p.matcher(line);// 进行匹配 47 48 while (m.find()) { 49 i++; 50 outWriter.write(m.group() + ";\r\n");// 将匹配的字符输入到目标文件 51 } 52 } 53 long StopTime = System.currentTimeMillis(); 54 String UseTime=(StopTime-StartTime)+""; 55 outWriter.write("--------------------------------------------------------\r\n"); 56 outWriter.write("本次爬取页面地址:"+webaddress+"\r\n"); 57 outWriter.write("爬取用时:"+UseTime+"毫秒\r\n"); 58 outWriter.write("本次共得到邮箱:"+i+"条\r\n"); 59 outWriter.write("****谢谢您的使用****\r\n"); 60 outWriter.write("--------------------------------------------------------"); 61 outWriter.close();// 关闭文件输出操作 62 System.out.println(" —————————————————————\t"); 63 System.out.println("|页面爬取成功,请到E盘根目录下查看test文档|\t"); 64 System.out.println("| |"); 65 System.out.println("|如需重新爬取,请再次执行程序,谢谢您的使用|\t"); 66 System.out.println(" —————————————————————\t"); 67 } 68 }
txt截图如下:
测试网址:http://tieba.baidu.com/p/2976611415,通过此例读者可以轻松抓取网页上的邮箱,如果读者对正则表达
式有所了解,那么不仅可以抓取邮箱,还可以抓取电话号码,ip地址等待一切想要抓取的信息.是不是 很有趣呢!
作者:vpoet
出处:http://www.cnblogs.com/vpoet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/vpoet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。