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. jQuery碎语(4) 实用函数

    6.实用函数 ● 修剪字符串 $('#id').val($.trim($('#someid').val())) ● 遍历集合 可能这样写: var anArray = ['one','two']; f ...

  2. 汇编语言的Hello World

      汇编语言的Hello World,汇编语言没有我想象的那么低级,它已经具备了不少高级语言的特性,代码也变得清晰,层次清楚,易于维护了. a.asm .386 .model flat,stdcall ...

  3. [翻译] FlatUIKit

    FlatUIKit FlatUIKit is a collection of iOS components styled with the "Flat UI" aesthetic ...

  4. Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!

    执行Maven Install打包的时候,提示以下警告信息: [WARNING] Using platform encoding (GBK actually) to copy filtered res ...

  5. mac securecrt无法记住密码的解决方法

    打开secureCRT,菜单preferences--general,找到mac options.然后去掉Use KeyChain选项,这样每次连接服务器后就会自动保存密码了.不同的版本可能这个选项的 ...

  6. c# webBrowser下载图片

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { ...

  7. 使用StringBuilder或StringBuffer简单优化

    使用StringBuilder或StringBuffer // join(["a", "b", "c"]) -> "a an ...

  8. Expectation Maximization-EM(期望最大化)-算法以及源码

    在统计计算中,最大期望(EM)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable).最大期望经常用在机器学 ...

  9. cgroup子系统2_devices子系统

    devices子系统用于控制cgroup中全部进程能够訪问哪些设备,三个控制文件:devices.allow,devices.deny,devices.list. devices.allow用于指定c ...

  10. HBase性能调优(转)

    原文链接:http://www.blogjava.net/ivanwan/archive/2011/06/15/352350.html 因官方Book Performance Tuning部分章节没有 ...