利用Java實(shí)現(xiàn)解析網(wǎng)頁中的內(nèi)容
一、題目描述
題目實(shí)現(xiàn):做一個(gè)解析指定網(wǎng)址的網(wǎng)頁內(nèi)容小應(yīng)用。
二、解題思路
創(chuàng)建一個(gè)類:InternetContentFrame,繼承JFrame窗體類。
定義一個(gè)getURLCollection()方法:用于解析網(wǎng)頁內(nèi)容
使用URLConnection類的getInputStream()方法 獲取網(wǎng)頁資源的輸入流對(duì)象。
三、代碼詳解
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>
* 修改記錄:
* 修改后版本 修改人 修改日期 修改內(nèi)容
* 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("解析網(wǎng)頁中的內(nèi)容");
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("輸入網(wǎng)址:");
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();// 獲得輸入的網(wǎng)址
Collection urlCollection = getURLCollection(address);// 調(diào)用方法,獲得網(wǎng)頁內(nèi)容的集合對(duì)象
Iterator it = urlCollection.iterator(); // 獲得集合的迭代器對(duì)象
while(it.hasNext()){
ta_content.append((String)it.next()+"\n"); // 在文本域中顯示解析的內(nèi)容
}
}
});
button.setText("解析網(wǎng)頁");
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>(); // 創(chuàng)建集合對(duì)象
try{
url = new URL(urlString); // 創(chuàng)建URL對(duì)象
conn = url.openConnection(); // 獲得連接對(duì)象
conn.connect(); // 打開到url引用資源的通信鏈接
InputStream is = conn.getInputStream(); // 獲取流對(duì)象
InputStreamReader in = new InputStreamReader(is,"UTF-8"); // 轉(zhuǎn)換為字符流
BufferedReader br = new BufferedReader(in); // 創(chuàng)建緩沖流對(duì)象
String nextLine = br.readLine(); // 讀取信息,解析網(wǎng)頁
while (nextLine !=null){
urlCollection.add(nextLine); // 解析網(wǎng)頁的全部?jī)?nèi)容,添加到集合中
nextLine = br.readLine(); // 讀取信息,解析網(wǎng)頁
}
}catch(Exception ex){
ex.printStackTrace();
}
return urlCollection;
}
}
解析結(jié)果:

到此這篇關(guān)于利用Java實(shí)現(xiàn)解析網(wǎng)頁中的內(nèi)容的文章就介紹到這了,更多相關(guān)Java解析網(wǎng)頁內(nèi)容內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot整合SSE實(shí)時(shí)通信的問題小結(jié)
本文介紹了服務(wù)器發(fā)送事件(Server-Sent Events,SSE)技術(shù),其主要特點(diǎn)包括單向數(shù)據(jù)流、自動(dòng)重連、自定義事件類型等,SSE適用于實(shí)時(shí)更新場(chǎng)景,如新聞推送、評(píng)論系統(tǒng)等,感興趣的朋友跟隨小編一起看看吧2025-01-01
Springboot攔截器如何獲取@RequestBody參數(shù)
這篇文章主要介紹了Springboot攔截器如何獲取@RequestBody參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Java實(shí)現(xiàn)通過時(shí)間獲取8位驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了Java如何通過時(shí)間獲取8位驗(yàn)證碼(每?jī)蓚€(gè)小時(shí)生成一個(gè)),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11
Java如何將二維數(shù)組轉(zhuǎn)化為一維數(shù)組
這篇文章主要介紹了Java如何將二維數(shù)組轉(zhuǎn)化為一維數(shù)組,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
SpringBoot時(shí)間格式化的方法小結(jié)
SpringBoot中的時(shí)間格式化通常指的是將Java中的日期時(shí)間類型轉(zhuǎn)換為指定格式的字符串,或者將字符串類型的時(shí)間解析為Java中的日期時(shí)間類型,本文小編將給大家詳細(xì)總結(jié)了SpringBoot時(shí)間格式化的方法,剛興趣的小伙伴跟著小編一起來看看吧2023-10-10

