Java---网络蜘蛛-网页邮箱抓取器~源码

简介: Java---网络蜘蛛-网页邮箱抓取器~源码

刚刚学完Socket,迫不及待的做了这个网页邮箱抓取~~~

自己以前做过微商,而且还掏钱买过抓取网络邮箱的软件~现在O(∩_∩)O哈哈~我自己做~当然啦,没有别人做得好~只是功能还是差不多啦~


给一个带协议的网站~然后深入网页中查找邮箱~


因为博主知识有限~线程池目前还没有学~导致无法控制线程~~~见谅~

还有~就是没有设置停止按钮~也是因为没学线程池~水平不够啊~

只能关闭软件来停止程序~

package cn.hncu.bs;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;
import cn.hncu.thread.RunThread;
import cn.hncu.threadPool.ThreadPool;
/**
 * 
 * @author 陈浩翔
 * @version 1.0  2016-5-12
 */
public class SpiderUi extends javax.swing.JFrame {
    private String path = SpiderUi.class.getClassLoader().getResource("./").getPath();
    public SpiderUi() {
        super("网络蜘蛛1.0-陈浩翔版权所有!");
        initComponents();
    }
    private void initComponents() {
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        tfdUrl = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        tfdTime = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        btnRun = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setMinimumSize(new java.awt.Dimension(400, 400));
        getContentPane().setLayout(null);
        jLabel1.setFont(new java.awt.Font("Dialog", 1, 24));
        jLabel1.setForeground(new java.awt.Color(255, 0, 51));
        jLabel1.setText("\u7f51\u7edc\u8718\u86db-\u7f51\u9875\u90ae\u7bb1\u6293\u53d6\u56681.0");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(30, 20, 350, 70);
        jLabel2.setFont(new java.awt.Font("Dialog", 1, 14));
        jLabel2.setText("\u9012\u5f52\u6df1\u5165\u5c42\u6570:");
        getContentPane().add(jLabel2);
        jLabel2.setBounds(20, 190, 110, 30);
        tfdUrl.setFont(new java.awt.Font("Dialog", 1, 12));
        getContentPane().add(tfdUrl);
        tfdUrl.setBounds(20, 140, 350, 30);
        jLabel3.setFont(new java.awt.Font("Dialog", 1, 14));
        jLabel3.setText("\u8d77\u59cbURL:");
        getContentPane().add(jLabel3);
        jLabel3.setBounds(20, 100, 70, 30);
        tfdTime.setFont(new java.awt.Font("Dialog", 1, 14));
        getContentPane().add(tfdTime);
        tfdTime.setBounds(20, 230, 60, 30);
        jLabel4.setFont(new java.awt.Font("Dialog", 0, 11));
        jLabel4.setText("\u5373\u641c\u7d22\u7f51\u9875\u90ae\u7bb1\u65f6,\u641c\u7d22\u6df1\u5165\u7684\u5c42\u6570,\u5efa\u8bae200\u5de6\u53f3");
        getContentPane().add(jLabel4);
        jLabel4.setBounds(90, 230, 250, 30);
        btnRun.setFont(new java.awt.Font("Dialog", 1, 18));
        btnRun.setForeground(new java.awt.Color(0, 51, 255));
        btnRun.setText("\u5f00\u59cb\u6293\u53d6");
        btnRun.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnRunActionPerformed(evt);
            }
        });
        getContentPane().add(btnRun);
        btnRun.setBounds(40, 300, 110, 50);
        jButton1.setFont(new java.awt.Font("Dialog", 1, 18));
        jButton1.setForeground(new java.awt.Color(0, 51, 255));
        jButton1.setText("\u5e2e\u52a9");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1);
        jButton1.setBounds(230, 300, 120, 50);
    }
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        JOptionPane.showMessageDialog(this, "抓取的邮箱存储在"+path+"/crawlingFile/mail.txt文件中\r\nURL存储在"+path+"/crawlingFile/http.txt文件中");
    }
    private void btnRunActionPerformed(java.awt.event.ActionEvent evt) {
        int time;
        try {
            time = Integer.parseInt(tfdTime.getText());
        } catch (NumberFormatException e1) {
            JOptionPane.showMessageDialog(this, "输入的层数格式错误!应该为整数!");
            return;
        }
        try {
            String inet = tfdUrl.getText();
            URL url = new URL(inet);
            File file = new File(path);
            if (!file.exists()) {
                file.mkdir();
            }
            DataOutputStream dout = new DataOutputStream(
                    new BufferedOutputStream(new FileOutputStream(
                            path+"/crawlingFile/mail.txt", true)));
            DataOutputStream doutHttp = new DataOutputStream(
                    new BufferedOutputStream(new FileOutputStream(
                            path+"/crawlingFile/http.txt", true)));
            System.out.println(url+","+time+","+dout+","+doutHttp);
//            RunThread run = ThreadPool.getRunThread(url, time, dout, doutHttp, path);
//            run.start();
            new RunThread(url, time, dout, doutHttp,path).start();
            //System.out.println("主线程线程读取完!");
        } catch (MalformedURLException e) {
            JOptionPane.showMessageDialog(this, "请输入正确的URL地址!!");
            return;
        } catch (IOException e) {
            JOptionPane.showMessageDialog(this, "请输入正确的URL地址!!");
            return;
        }
    }
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new SpiderUi().setVisible(true);
            }
        });
    }
    private javax.swing.JButton btnRun;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JTextField tfdTime;
    private javax.swing.JTextField tfdUrl;
}

程序主界面图:20160512160952006.png

目录
相关文章
|
1月前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
68 11
|
2月前
|
Java 程序员
JAVA程序员的进阶之路:掌握URL与URLConnection,轻松玩转网络资源!
在Java编程中,网络资源的获取与处理至关重要。本文介绍了如何使用URL与URLConnection高效、准确地获取网络资源。首先,通过`java.net.URL`类定位网络资源;其次,利用`URLConnection`类实现资源的读取与写入。文章还提供了最佳实践,包括异常处理、连接池、超时设置和请求头与响应头的合理配置,帮助Java程序员提升技能,应对复杂网络编程场景。
80 9
|
2月前
|
人工智能 Java 物联网
JAVA网络编程的未来:URL与URLConnection的无限可能,你准备好了吗?
随着技术的发展和互联网的普及,JAVA网络编程迎来新的机遇。本文通过案例分析,探讨URL与URLConnection在智能API调用和实时数据流处理中的关键作用,展望其未来趋势和潜力。
60 7
|
2月前
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
93 32
|
2月前
|
人工智能 自然语言处理
WebDreamer:基于大语言模型模拟网页交互增强网络规划能力的框架
WebDreamer是一个基于大型语言模型(LLMs)的网络智能体框架,通过模拟网页交互来增强网络规划能力。它利用GPT-4o作为世界模型,预测用户行为及其结果,优化决策过程,提高性能和安全性。WebDreamer的核心在于“做梦”概念,即在实际采取行动前,用LLM预测每个可能步骤的结果,并选择最有可能实现目标的行动。
77 1
WebDreamer:基于大语言模型模拟网页交互增强网络规划能力的框架
|
2月前
|
网络协议 Java 物联网
Java网络编程知识点
Java网络编程知识点
65 13
|
4月前
|
缓存 网络协议 CDN
在网页请求到显示的过程中,如何优化网络通信速度?
在网页请求到显示的过程中,如何优化网络通信速度?
194 59
|
2月前
|
Java 开发者
JAVA高手必备:URL与URLConnection,解锁网络资源的终极秘籍!
在Java网络编程中,URL和URLConnection是两大关键技术,能够帮助开发者轻松处理网络资源。本文通过两个案例,深入解析了如何使用URL和URLConnection从网站抓取数据和发送POST请求上传数据,助力你成为真正的JAVA高手。
75 11
|
2月前
|
安全 Java API
深入探索Java网络编程中的HttpURLConnection:从基础到进阶
本文介绍了Java网络编程中HttpURLConnection的高级特性,包括灵活使用不同HTTP方法、处理重定向、管理Cookie、优化安全性以及处理大文件上传和下载。通过解答五个常见问题,帮助开发者提升网络编程的效率和安全性。
183 9
|
2月前
|
JSON 安全 算法
JAVA网络编程中的URL与URLConnection:那些你不知道的秘密!
在Java网络编程中,URL与URLConnection是连接网络资源的两大基石。本文通过问题解答形式,揭示了它们的深层秘密,包括特殊字符处理、请求头设置、响应体读取、支持的HTTP方法及性能优化技巧,帮助你掌握高效、安全的网络编程技能。
103 9