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. MVC使用AdditionalMetadata为Model属性添加额外信息

    当需要为Model的属性添加一些额外信息的时候,使用[AdditionalMetadata("somekey", "some content")]是不错的选择, ...

  2. 访问自身子画面的方法 [self.view viewWithTag:100];

    UIImageView *view1 = (UIImageView*)[self.view  viewWithTag:100];

  3. selenium3+python自动化50-环境搭建(firefox)

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...

  4. weblogic 12C 安全加强:更改Console及管理端口

    一.管理端口的好处:1.由于我们使用的是weblogic直接提供web访问,所以防火墙无法对80端口做安全策略. 2.所有用户都可以使用http://www.reyo.cn/console/来登陆我们 ...

  5. Android之Volley使用

    转自:http://blog.csdn.net/lfdfhl/article/details/12223345 稍微做了一点儿修改 /** * 利用NetworkImageView显示网络图片 */ ...

  6. Android之MVC——Model通知View去更新(实用)

    下面两段标红加深的代码是重点: import android.app.Activity; import android.os.Bundle; import android.view.View; imp ...

  7. JAVA常见算法题(三十五)

    判断一个整数能被几个9整除. public static void main(String[] args) { f(729); f(730); } public static void f(int n ...

  8. mysql的TABLE_SCHEMA的sql和information_schema表, MySQL管理一些基础SQL语句, Changes in MySQL 5.7.2

    3.查看库表的最后mysql修改时间, 如果第一次新建的表可能还没有update_time,所以这里用了ifnull,当update_time为null时用create_time替代 select T ...

  9. strdup实现

    char * strdup(char *str) { char * strNew; assert(str != NULL); strNew = (); strcpy(strNew,str); retu ...

  10. 硬件负载均衡F5和软负责均衡Nginx

    请直接搜索相关文章了解:http://www.ideadata.com.cn/wisdomAction/readWisdom.do?id=75   F5,硬件 优点:能够直接通过智能交换机实现,处理能 ...