⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmlparse.java

📁 张新曼 精通JSP Web 开发技术与典型应用 随书光盘源码
💻 JAVA
字号:
package ch17;

import javax.swing.text.html.HTMLEditorKit.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
import java.util.*;
import java.text.*;

//解析网页的类HTMLparse,父类为ParserCallback 
public class HTMLparse extends ParserCallback {

	Vector urls = new Vector();// 保存从网页中提取的URL
	
	static final int NONE = 0; 

	static final int TITLE = 1;

	static final int HREF = 2;
	
	String Title = "";// 网页标题

	String Desc = "";// 网页描述

	String Keywords = "";// 关键字

	String PageContent = "";// 网页内容

	int state;// 表示解析状态
	    
	 //规范化字符串函数
	private String Format(String str, int length) {
		if (str.length() < length)
			return str;
		return str.substring(0, length);
	}
	
	//处理简单标记函数
	public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet attributes,
			int pos) {
		//实现接口中的方法以处理HTML.Tag.META标志
		if (tag.equals(HTML.Tag.META))
			handleMETA(attributes);		
	}

	//处理结束标志函数
	public void handleEndTag(HTML.Tag tag, int pos) {
		state = NONE;// 遇到结束标志时将状态标志置0表示此标志已经解析完
	}

	//处理开始标志函数
	public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes,
			int pos) {
		if (tag.equals(HTML.Tag.TITLE))
			state = TITLE;// 处理标题
		else if (tag.equals(HTML.Tag.A))
			handleAnchor(attributes);// 处理URL
		else
			state = NONE;

	}
	
	//处理URL链接
	public void handleAnchor(MutableAttributeSet attributes) {
		String url =(String)attributes.getAttribute(HTML.Attribute.HREF);
		if (url == null)
			return;
		urls.add(url); //增加URL到urls vector中。
		state = HREF;
	}
	
   //处理文本函数
	public void handleText(char[] text, int pos) {
		switch (state) {
		case NONE:
			//取得页面文本
			PageContent += new String(text) + "";
			break;
		case TITLE:
			//取得标题
			Title = new String(text);
			break;

		}
	}
	
   //处理META标志函数
	public void handleMETA(MutableAttributeSet attributes) {
		String name = new String();
		String ct = new String();
		name = (String) attributes.getAttribute(HTML.Attribute.NAME);
		name = name.toUpperCase();
		ct = (String) attributes.getAttribute(HTML.Attribute.CONTENT);
		
		if (name == null || ct == null)
			return;
		
		if (name.equals("DESCRIPTION")) {
			Desc = ct;
			return;
		}
		if (name.equals("KEYWORDS")) {
			Keywords = ct;
			return;
		}
	}
	
   	public Vector getLinks() {// 取得网页超链接集合
		return urls;
	}
	
	public String getTitle() {// 规范化标题,最长100字节
		return Format(Title, 100);
	}

	public String getDescription() {// 规范化描述,最长200字节
		return Format(Desc, 200);
	}

	public String getKeywords() {// 规范化关键字,最长200字节
		return Format(Keywords, 200);
	}

	public String getPageContent() {// 规范化网页内容,最长64000字节
		return Format(PageContent, 64000);
	}

   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -