import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
 * 网页爬虫:其实就一个程序用于在互联网中获取符合指定规则的数据。
 *
 * 爬取邮箱地址。
 *
 */
public class RegexTest2 {

/**
  * @param args
  * @throws IOException
  */
 public static void main(String[] args) throws IOException {

List<String> list = getMailsByWeb();
  
  for(String mail : list){
   System.out.println(mail);
  }
 }
 
 public static List<String> getMailsByWeb() throws IOException {
  
  //1,读取源文件。
//    BufferedReader bufr = new BufferedReader(new FileReader("c:\\mail.html"));
  
  URL url = new URL("http://192.168.1.100:8080/myweb/mail.html");
  
  BufferedReader bufIn = new BufferedReader(new InputStreamReader(url.openStream()));
    
  //2,对读取的数据进行规则的匹配。从中获取符合规则的数据.
  String mail_regex = "\\w+@\\w+(\\.\\w+)+";
  
  List<String> list = new ArrayList<String>();
  
  
  Pattern p = Pattern.compile(mail_regex);
  
  String line = null;
  
  while((line=bufIn.readLine())!=null){
   
   Matcher m = p.matcher(line);
   while(m.find()){
    //3,将符合规则的数据存储到集合中。
    list.add(m.group());
   }
   
  }
  return list;
 }

public static List<String>  getMails() throws IOException{
  
  //1,读取源文件。
  BufferedReader bufr = new BufferedReader(new FileReader("c:\\mail.html"));
  
  //2,对读取的数据进行规则的匹配。从中获取符合规则的数据.
  String mail_regex = "\\w+@\\w+(\\.\\w+)+";
  
  List<String> list = new ArrayList<String>();
  
  
  Pattern p = Pattern.compile(mail_regex);
  
  String line = null;
  
  while((line=bufr.readLine())!=null){
   
   Matcher m = p.matcher(line);
   while(m.find()){
    //3,将符合规则的数据存储到集合中。
    list.add(m.group());
   }
   
  }
  return list;
  
 }

}

Java 爬虫(获取指定页面中所有的邮箱地址)的更多相关文章

  1. Java中利用正则表达式获取一个网页中的所有邮箱地址

    package cn.tms.ui; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; im ...

  2. 使用JavaScript设置、获取父子页面中的值

    一:获取父页面中的值 有二种方法windows.open()和windows.showModalDialog() 1.windos.open(URL,name,reatures,replace) 再父 ...

  3. javascript 获取父页面中元素对象方法

    父页面中: <input type="hidden" id="areaID" value="test1"> <iframe ...

  4. PHP获取指定页面的指定内容

    在刚入手PHP的时候,经理让我自己做一个文章的管理系统为了方便管理微信端发的消息.除了简单的添加分类.管理分类.添加文章.管理文章,还有一个功能就是要从微信文章网址中拿到网址上的标题.作者以及发表时间 ...

  5. 一行JavaScript代码获取页面中的所有超链接地址

    因为我喜欢收集Web开发类的网址,平时对网址就很敏感. 我总结了一下我收集网址的几个阶段: 1.纯手工阶段,傻傻的阶段. 在这个阶段,主要是收集一些在页面中展现出来的网址,就是说,如果网址出现在HTM ...

  6. java正则表达式获取指定HTML标签的指定属性值

    package com.mmq.regex; import java.util.ArrayList; import java.util.List; import java.util.regex.Mat ...

  7. Java项目在jsp页面中引入jquery框架的步骤

    环境:在Java  web项目中引入juqery框架 工具:MyEclipse8.5 [步骤如下] A:新建一个Java web项目TestJquery,在WebRoot目录下创建一个jquery文件 ...

  8. Java读取excel指定sheet中的各行数据,存入二维数组,包括首行,并打印

    1. 读取 //读取excel指定sheet中的各行数据,存入二维数组,包括首行 public static String[][] getSheetData(XSSFSheet sheet) thro ...

  9. String 类中的几个练习--获取指定字符串中,大写字母、小写字母、数字的个数||获取一个字符串中,另一个字符串出现的次数

    package cn.homework.demo1; public class GetCount { /* * 获取一个字符串中,另一个字符串出现的次数 * 思想: * 1. indexOf到字符串中 ...

随机推荐

  1. PL/SQL的下载与安装

    注意,为了更好的通用性,最好安装32位的. 下载地址为:https://www.allroundautomations.com/bodyplsqldevreg.html 当前最新正式版本为PL/SQL ...

  2. [iOS] UIView的clipsTobounds属性

    如题,有两个view: view1,view2view2添加view1到中,如果view2大于view1,或者view2的坐标不全在view1的范围内,view2是盖着view1的,意思就是超出的部份 ...

  3. win7无线网络共享

    一.最简单的方法: 1.使用360安全卫士 2.安装一个驱动人生 二.手工设置,参考:http://www.jb51.net/os/windows/63472.html

  4. Java 中的 int 与 Integer 用于 List&lt;Integer&gt; 时,以及通过打印变量检測程序执行和函数调用次数计数

    总结一下近期做的东西中遇到的问题 1. Java 中的 int 与 Integer 用于 List<Integer>  时 两者之间的关系都是非常清楚的.int 是基本数据类型,存储的是值 ...

  5. Spring注解方式实现任务调度【官方文档翻译】

    原文:http://docs.spring.io/spring/docs/4.0.1.BUILD-SNAPSHOT/javadoc-api/ 注解类型:EnableScheduling @Target ...

  6. 分享JavaScript获取网页关闭与取消关闭的事件

    在做Web开发时,我们经常用到页面关闭事件onbeforeunload,可以给用户一个选择放弃关闭的机会,就比如这个博客编辑器.如果用户选择了离开,那么onunload事件自然会触发:但若用户选择了取 ...

  7. Spring9 : Autowire(自动装配)机制

    原文出处: 五月的仓颉 为什么Spring要支持Autowire(自动装配) 先写几个类,首先定义一个Animal接口表示动物: 1 2 3 4 5 public interface Animal { ...

  8. java之 22天 GUI 图形界面编程(一)

    转自:http://takeme.iteye.com/blog/1876850 GUI(图形用户界面) import java.awt.Button; import java.awt.FlowLayo ...

  9. Android之属性动画(一)

    一.概述 Android平台中常用的动画主要有两类,一类是View动画,一类是3.0后新增的属性动画.属性动画与View动画相比功能更加强大,主要体现在以下两个方面: 1.  属性动画不仅仅能应用到V ...

  10. 黑马day12 DbUtils的介绍

    简单介绍: DbUtils为不喜欢hibernate框架的钟爱.它是线程安全的,不存在并发问题. 使用步骤: 1. QueryRunner runner=new QueryRunner(这里写数据源. ...