利用Java实现解析网页中的内容

 更新时间:2022年10月11日 11:43:15   作者:小虚竹and掘金  
这篇文章主要为大家详细介绍了如何利用Java语言做一个解析指定网址的网页内容小应用,文中的实现步骤讲解详细,感兴趣的可以尝试下

一、题目描述

题目实现:做一个解析指定网址的网页内容小应用。

二、解题思路

创建一个类:InternetContentFrame,继承JFrame窗体类。

定义一个getURLCollection()方法:用于解析网页内容

使用URLConnection类的getInputStream()方法 获取网页资源的输入流对象。

三、代码详解

InternetContentFrame

package com.xiaoxuzhu;


import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
 * Description: 
 *
 * @author xiaoxuzhu
 * @version 1.0
 *
 * <pre>
 * 修改记录:
 * 修改后版本	        修改人		修改日期			修改内容
 * 2022/5/23.1	    xiaoxuzhu		2022/5/23		    Create
 * </pre>
 * @date 2022/5/23
 */
public class InternetContentFrame extends JFrame {

    private JTextArea ta_content;
    private JTextField tf_address;
    /**
     * Launch the application
     * @param args
     */
    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    InternetContentFrame frame = new InternetContentFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame
     */
    public InternetContentFrame() {
        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.add(label);

        tf_address = new JTextField();
        tf_address.setPreferredSize(new Dimension(260,25));
        panel.add(tf_address);

        final JButton button = new JButton();
        button.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent e) {
                String address = tf_address.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);
        //
    }
    public Collection<String> getURLCollection(String urlString){
        URL url = null;                             // 声明URL
        URLConnection conn = null;                  // 声明URLConnection
        Collection<String> urlCollection = new ArrayList<String>(); // 创建集合对象
        try{
            url = new URL(urlString);               // 创建URL对象
            conn = url.openConnection();            // 获得连接对象
            conn.connect();                         // 打开到url引用资源的通信链接
            InputStream is = conn.getInputStream(); // 获取流对象
            InputStreamReader in = new InputStreamReader(is,"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;
    }

}

解析结果:

到此这篇关于利用Java实现解析网页中的内容的文章就介绍到这了,更多相关Java解析网页内容内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MyBatis-Plus+Druid配置及应用详解

    MyBatis-Plus+Druid配置及应用详解

    这篇文章主要介绍了MyBatis-Plus+Druid配置及应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 如何使用idea里面自带的翻译插件

    如何使用idea里面自带的翻译插件

    这篇文章主要介绍了idea里面自带的翻译插件,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Java定时任务的三种实现方法

    Java定时任务的三种实现方法

    在应用里经常都有用到在后台跑定时任务的需求。举个例子,比如需要在服务后台跑一个定时任务来进行垃圾回收
    2014-04-04
  • mybatis中注解映射SQL示例代码

    mybatis中注解映射SQL示例代码

    这篇文章主要给大家介绍了关于mybatis中注解映射SQL的相关资料,文中给出了详细的示例代码供大家参考学习,对大家的学习或者共组具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • Java真题实练掌握哈希表的使用

    Java真题实练掌握哈希表的使用

    哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过把关键码映射的位置去寻找存放值的地方,说起来可能感觉有点复杂,我想我举个例子你就会明白了,最典型的的例子就是字典
    2022-07-07
  • FastJson实现驼峰下划线相互转换方法详解

    FastJson实现驼峰下划线相互转换方法详解

    这篇文章主要介绍了使用FastJson进行驼峰下划线相互转换写法及误区,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-01-01
  • Mybatis实现插入数据后返回主键过程解析

    Mybatis实现插入数据后返回主键过程解析

    这篇文章主要介绍了Mybatis实现插入数据后返回主键过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • springboot实现启动直接访问项目地址

    springboot实现启动直接访问项目地址

    这篇文章主要介绍了springboot实现启动直接访问项目地址,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java中HashMap集合的常用方法详解

    Java中HashMap集合的常用方法详解

    本篇文章给大家带来的内容是关于Java中HashMap集合的常用方法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。下面我们就来学习一下吧
    2021-11-11
  • Java三种求水仙花数的方法

    Java三种求水仙花数的方法

    本篇文章通过求水仙花数的实例来让大家对JAVA求数的概念和方法有更深入的理解和应用,学习参考下吧。
    2018-02-02

最新评论