java使用正则抓取网页邮箱

 更新时间:2016年05月27日 08:41:55   投稿:lijiao  
这篇文章主要为大家详细介绍了java使用正则抓取网页邮箱的相关资料,感兴趣的小伙伴们可以参考一下

使用正则抓捕网上邮箱

这就是我们需要抓捕的网站。

实现思路:

1、使用java.net.URL对象,绑定网络上某一个网页的地址
2、通过java.net.URL对象的openConnection()方法获得一个HttpConnection对象
3、通过HttpConnection对象的getInputStream()方法获得该网络文件的输入流对象InputStream
4、循环读取流中的每一行数据,并由Pattern对象编译的正则表达式区配每一行字符,取得email地址

下面是我们的代码:

package cn.bdqn;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//和网络相关的操作
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则抓取邮箱
 * @author happy
 *
 */
public class Test {
 public static void main(String[] args) throws IOException {
  //1.1 创建一个url对象
  URL url = new URL("https://www.douban.com/group/topic/8845032/"); 
  //1.2 打开连接 
  URLConnection conn = url.openConnection(); 
  //1.3 设置连接网络超时时间 单位为毫秒
  conn.setConnectTimeout(1000 * 10); 
  //1.4 通过流 操作读取指定网络地址中的文件 
  BufferedReader bufr = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
  String line = null; 
  //1.5 匹配email的正则
  String regex = "[a-zA-Z0-9_-]+@\\w+\\.[a-z]+(\\.[a-z]+)?";
  //1.6 使用模式的compile()方法生成模式对象
  Pattern p = Pattern.compile(regex); 
  //1. 
  while((line = bufr.readLine()) != null) { 
   Matcher m = p.matcher(line); 
   while(m.find()) { 
    System.out.println(m.group());// 获得匹配的email 
   } 
  } 
 }
}

这里主要是利用正则来匹配邮箱:

String regex = "[a-zA-Z0-9_-]+@\\w+\\.[a-z]+(\\.[a-z]+)?";

[a-zA-Z0-9_-]只能包含字母、数字、下划线、减号,”+ ”的话就是匹配[a-zA-Z0-9_-]一次或多次,@后可以出现任何非单字符等价于[^a-zA-Z0-9_],他可以重复出现一次或多次,结束后必须要有\.是给.做转义的,然后点后可以出现a到z之间的任意字符。

捕获的结果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • RabbitMQ 延迟队列实现订单支付结果异步阶梯性通知(实例代码)

    RabbitMQ 延迟队列实现订单支付结果异步阶梯性通知(实例代码)

    这篇文章主要介绍了RabbitMQ 延迟队列实现订单支付结果异步阶梯性通知,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • idea maven 构建本地jar包及pom文件的过程

    idea maven 构建本地jar包及pom文件的过程

    这篇文章主要介绍了idea maven 构建本地jar包及pom文件的过程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11
  • java多线程从入门到精通看这篇就够了

    java多线程从入门到精通看这篇就够了

    熟悉 Java 多线程编程的同学都知道,当我们线程创建过多时,容易引发内存溢出,因此我们就有必要使用线程池的技术了,今天通过本文给大家分享java多线程从入门到精通的相关知识,一起看看吧
    2021-06-06
  • Java计算两个程序运行时间的实例

    Java计算两个程序运行时间的实例

    下面小编就为大家带来一篇Java计算两个程序运行时间的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • vue3实现一个todo-list

    vue3实现一个todo-list

    这篇文章主要为大家详细介绍了基于vuejs实现一个todolist项目,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能给你带来帮助
    2021-08-08
  • Java如何处理图片保存之后变红色的问题

    Java如何处理图片保存之后变红色的问题

    这篇文章主要介绍了Java如何处理图片保存之后变红色的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 有关IntelliJ IDEA中LeetCode插件配置问题

    有关IntelliJ IDEA中LeetCode插件配置问题

    这篇文章主要介绍了关于IntelliJ IDEA中LeetCode插件配置问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • FreeMarker配置(Configuration)

    FreeMarker配置(Configuration)

    所有与该configuration 对象关联的模版实例都就可以通过获得to_upper 转换器,company 来获得字符串,因此你不需要再一次次的往root 中添加这些变量了。如果你往root 添加同名的变量,那么你新添加的变量将会覆盖之前的共享变量。
    2016-04-04
  • 详解Java泛型中类型擦除问题的解决方法

    详解Java泛型中类型擦除问题的解决方法

    Java泛型的实现是不完整的,有时会遇到一些Java泛型类型擦除的问题。本文将详细为大家讲解Java泛型中类型擦除问题的解决方法,需要的可以参考一下
    2022-05-05
  • Java实现简单树结构

    Java实现简单树结构

    这篇文章主要为大家详细介绍了Java实现简单树结构的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01

最新评论