网页抓取qq(JAVA网站一个页面上的全部邮箱为例来做具体说明 )

优采云 发布时间: 2022-02-27 15:21

  网页抓取qq(JAVA网站一个页面上的全部邮箱为例来做具体说明

)

  网络爬虫(也称为网络蜘蛛、网络机器人,在 FOAF 社区中,通常称为网络追逐者)是根据某些规则自动从万维网上爬取信息的程序或脚本。

  今天,我们就以JAVA抓取一个页面网站上的所有邮箱为例,做一个具体的讲解。人们一直很懒惰,不再制作GUI。让我们看看并理解其原理。

  ————————————————————————————————————————————————————— —

  最好在百度上找个网页,多想想。本次以贴吧网页点击打开链接为例进行说明。

  

  从图片和网页可以看出,上面有很多邮箱。我大致看了十几页,大概有几百页。如果你是房东,你一定很难处理。如果你一个一个地发送它们,那将是太多的工作。一个一个地复制一个邮箱真的很累。但是,如果你不发布它,你肯定会被你的朋友所鄙视。

  怎么做?当然,如果有一个工具可以自动识别网页上的邮箱并把它们拉出来,那就太好了……

  他是一个网络爬虫,但是他是按照一定的规则来爬取网页数据,(像百度,谷歌做SEO主要是为了爬取和分析网页数据)并将这些数据保存起来,方便数据处理和使用。

  废话太多,去教程吧。

  ————————————————————————————————————————————————————— —

  思路分析:

  1.要获取网页的数据,必须获取到网页的链接

  2.为了在网页上获取邮箱地址,必须有相应的邮箱地址获取规则

  3.为了移除数据,必须通过数据相关类的操作来获取

  4.要保存数据,必须实现保存数据的操作

  ————————————————————————————————————————————————————— —

  接下来代码。

  package tool;import java.io.BufferedReader;import java.io.File;import java.io.FileWriter;import java.io.InputStreamReader;import java.io.Writer;import java.net.URL;import java.net.URLConnection;import java.sql.Time;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Demo { public static void main(String[] args) throws Exception {// 本程序内部异常过多为了简便,不一Try,直接抛给虚拟机 Long StartTime = System.currentTimeMillis(); System.out.println("-- 欢迎使用飞扬简易网页爬虫程序 --"); System.out.println(""); System.out.println("--请输入正确的网址如http://www.baidu.com--"); Scanner input = new Scanner(System.in);// 实例化键盘输入类 String webaddress = input.next();// 创建输入对象 File file = new File("D:" + File.separator + "test.txt");// 实例化文件类对象 // 并指明输出地址和输出文件名 Writer outWriter = new FileWriter(file);// 实例化outWriter类 URL url = new URL(webaddress);// 实例化URL类。 URLConnection conn = url.openConnection();// 取得链接 BufferedReader buff = new BufferedReader(new InputStreamReader( conn.getInputStream()));// 取得网页数据 String line = null; int i=0; String regex = "\\w+@\\w+(\\.\\w+)+";// 声明正则,提取网页前提 Pattern p = Pattern.compile(regex);// 为patttern实例化 outWriter.write("该网页中所包含的的邮箱如下所示:\r\n"); while ((line = buff.readLine()) != null) { Matcher m = p.matcher(line);// 进行匹配 while (m.find()) { i++; outWriter.write(m.group() + ";\r\n");// 将匹配的字符输入到目标文件 } } Long StopTime = System.currentTimeMillis(); String UseTime=(StopTime-StartTime)+""; outWriter.write("--------------------------------------------------------\r\n"); outWriter.write("本次爬取页面地址:"+webaddress+"\r\n"); outWriter.write("爬取用时:"+UseTime+"毫秒\r\n"); outWriter.write("本次共得到邮箱:"+i+"条\r\n"); outWriter.write("****谢谢您的使用****\r\n"); outWriter.write("--------------------------------------------------------"); outWriter.close();// 关闭文件输出操作 System.out.println(" —————————————————————\t"); System.out.println("|页面爬取成功,请到D盘根目录下查看test文档|\t"); System.out.println("| |"); System.out.println("|如需重新爬取,请再次执行程序,谢谢您的使用|\t"); System.out.println(" —————————————————————\t"); }}

  代码如上,每一行都有注释。如果实在不明白,可以联系我。

  编译->直接在命令行运行

  

  输入爬取页面的地址。

  

  打开D盘目录,找到test.xt文件。

  

  文件中的邮箱添加了“;” 默认情况下,方便大家发送。

  

  当然,爬取本地文件中的数据更容易

  不用过多解释,直接上代码。

  

  import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Demo0 { public static void main(String[] args)throws Exception { BufferedReader buff=new BufferedReader(new FileReader("D:"+File.separator+"test.txt")); String line=null; String regex="\\w+@\\w+(\\.\\w+)+"; Pattern p=Pattern.compile(regex); while ((line=buff.readLine())!= null) { Matcher m=p.matcher(line); while (m.find()) { System.out.println(m.group()+";"); } } }}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线