zoukankan      html  css  js  c++  java
  • 网页爬虫

    最近在回顾正则表达式,正好想起一个比较有意思的小程序:爬虫。

    爬虫,百度百科是这样说的:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫

     

    现在有这样一个需求:获取指定数据文本文件或网页上的所有邮箱地址

    下面我们用代码实现一下:

    首先,我们准备了这样的一份本地数据:mail.txt

    wefdvavxzfaf zhangsan@sina.com
    farefavdareraweqaee2
    sdfdsaa yanping@163.com adf
    sdfae
    WEFEW
    fae

    下面是代码实现:

    package com.shindo.java.regex;
    import java.io.*;
    import java.net.*;
    import java.util.regex.*;
    /**
     * 网页爬虫(蜘蛛)
     * 需求:获取指定数据文本文件或网页上的所有邮箱地址
     */
    public class WebCrawler {
        public static void main(String[] args)throws Exception{
            getMails();
    //        getMials_1();
        }
        
        /*
         * 读取本地文本文件,获取其中所有邮箱地址
         */
        public static void getMails()throws Exception{
            //读取本地文件
            BufferedReader buf = new BufferedReader(new FileReader("F:\mail.txt"));
            
            String line = null;
            //定义邮箱的正则表达式
            String mailreg = "\w+@\w+(\.\w+)+";
    
            //将mailreg转换为Pattern对象
            Pattern p = Pattern.compile(mailreg);
            
            //一行行读取
            while((line = buf.readLine())!= null ){
                Matcher m = p.matcher(line);//对每一行进行匹配
                while(m.find()){
                    System.out.println(m.group());//取数据
                }
            }
        }
        
        /**
         * 对网页中的数据进行筛选,爬出所有邮箱地址
         */
        public static void getMials_1()throws Exception{
            //获取网页链接
            URL url = new URL("网页地址");
            URLConnection conn = url.openConnection();
            
            BufferedReader bufIn = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            
            String line = null;
            
            String mailreg = "\w+@\w+(\.\w+)+";
            
            Pattern p = Pattern.compile(mailreg);
            
            while((line = bufIn.readLine()) != null){
                Matcher m = p.matcher(line);
                while(m.find()){
                    System.out.println(m.group());
                }
            }
        }
    }

    运行结果:

  • 相关阅读:
    SOA设计模式
    MVC架构设计模式
    12周总结
    11周总结
    window环境pycharm中使用cityscapes数据集训练deeplabv3+经验总结
    分析六大质量属性战术
    《一线架构师实践指南》第三章阅读笔记
    pip install 无法安装cv2
    PHP disable_functions Bypass
    MallBuilder逻辑后门(复现)
  • 原文地址:https://www.cnblogs.com/shindo/p/5302584.html
Copyright © 2011-2022 走看看