Java Swing程序解析Internet网页中的内容

4 篇文章 0 订阅

有时候需要对获取某个网页上的内容,例获取某一个网页上的所有超链接、form表单填写的内容以及提交的连接。这样就需要对网页的内容进行解析,解析后可以使用正则表达式获取自己想要的内容。(在java中也可使用jsoup来对网页内容进行解析)

下面主要通过URLConnection类的getInputStream()方法获取到输入地址的网页内容资源的输出流,从输出流读取信息,从而解析网页内容。

创建Swing界面

public GreatContentFrame() {

        super();//调用构造方法

        setTitle("解析网页内容");//设置窗体标题

        setBounds(100, 100, 484, 375);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置关闭方式

        final JPanel panel = new JPanel();//实例化面板

        getContentPane().add(panel, BorderLayout.NORTH);

        final JLabel label = new JLabel();

        label.setText("网址:");

        //将按钮添加到Panel

        panel.add(label);

        textAdress = new JTextField();

        //设置JTextField尺寸

        textAdress.setPreferredSize(new Dimension(260,25));

        panel.add(textAdress);

        final JButton button = new JButton();

        //注册button监听器

        button.addActionListener(new ActionListener() {

            public void actionPerformed(final ActionEvent e) {

                String address = textAdress.getText().trim();// 获得输入的网址

// 调用方法,获得网页内容的集合对象

                Collection urlCollection = getURLCollection(address);

                Iterator it = urlCollection.iterator();  //获得集合的迭代器对象

                while(it.hasNext()){

                    // 在文本域中显示解析的内容

ta_content.append((String)it.next()+"\n");                       }

            }

        });

        button.setText("解析");

        panel.add(button);

        final JScrollPane scrollPane = new JScrollPane();

        getContentPane().add(scrollPane, BorderLayout.CENTER);

        ta_content = new JTextArea();

        ta_content.setFont(new Font("微软雅黑", Font.BOLD, 14));

        scrollPane.setViewportView(ta_content);

}

首先在项目上创建一个类,继承JFrame类(窗体)。

再编写该类的构造方法,设置窗体的标题内容、关闭方式等,实例化JPanel类(面板),将JPanel添加到窗体中, 然后将Jlable、JButton、JTextArea等空间到JPanel中。其中button需要使用监听器监听按钮点击事件,当按下按钮时,从文本框获取到输入的网址,调用getURLCollection()方法,得到迭代器后进行遍历显示在文本域中。

public Collection<String> getURLCollection(String urlString){

 URL url = null// 声明URL

 URLConnection Connection = null; // 声明URLConnection

 Collection<String> urlCollection = new ArrayList<String>(); //实例化集合对象

 try{

// 实例化URL对象

     url = new URL(urlString);  

  Connection = url.openConnection();// 得到连接对象

// 打开url引用资源的通信链接(如果尚没有建立这样的连接)

     Connection.connect();

// 获取返回的流对象

     InputStream inStream = Connection.getInputStream();

//转为字符流

     InputStreamReader in = new InputStreamReader(inStream,"UTF-8"); 

// 创建缓冲流对象

   BufferedReader br = new BufferedReader(in);

// 读取信息,解析网页

     String nextLine = br.readLine();     

          while (nextLine !=null){

// 解析网页的全部内容,添加到集合中

                urlCollection.add(nextLine);

                nextLine = br.readLine();

            }

        }catch(Exception ex){

            ex.printStackTrace();

        }

        return urlCollection;

}

 

使用URLConnection类的getInputStream()方法获取到网页内容的输入流对象,从该输入流中读取信息,达到解析网页内容的效果。

注 输入的网址要是一个有效的网页地址,解析得到网页内容后,就可以获取你想要的内容了。

效果

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值