JAVA 通过HtmlParser获取指定的tag

本文详细介绍了如何使用HTMLParser库进行网页解析,并通过实现NodeFilter接口自定义过滤器来筛选特定标签,包括解析流程、示例代码及自定义过滤器的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package IBMSpider;

import org.htmlparser.Parser;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.nodes.TagNode;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;

public class testHtmlParser {

	public static void main(String[] args) {

		try {
			/*第一步,构建一个Parser*/
			Parser parser = new Parser();
			parser.setURL("http://www.cb.cityu.edu.hk/is/people/academic/");
			parser.setEncoding(parser.getEncoding());
			/*第二步,对网页解析,用parse(NodeFilter filter)
			 * 一方面,可以用实现NodeFilter接口的子类,如TagNameFilter
			 * 另一方面,可以修改NodeFilter接口方法:boolean accept(Node node),去构建自己的方法
			 *  */
			/*-------- 示例1 ---- */
			NodeList nodes = parser.parse(new TagNameFilter("INPUT"));
			/*-------- 示例2 ---- */
//			NodeList nodes = parser.parse(new MyNodeFilter(new String[]{"input","font"}));
			for(int i=0; i<nodes.size();i++){//nodes.size()
				TagNode node = (TagNode)nodes.elementAt(i);	
				 System.out.println("name是:" + node.getAttribute("name"));//获取tag的属性信息
			}
		} catch (ParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}


示例2中自定义的MyNodeFilter如下

package IBMSpider;

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Tag;

public class MyNodeFilter implements NodeFilter {
	  private String[] names;
	    
	    public MyNodeFilter(String[] names)
	    {
	        this.names = names;
	    }
	 // 接口方法的实现
	public boolean accept(Node node) {
		if (names == null) return false;// 结点不是Tag则返回
		if (node instanceof Tag == false) return false;// 结点是结束标记则返回
		for (int i =0; i<names.length;i++){
			String tagName =((Tag)node).getTagName();
			if (tagName.equalsIgnoreCase(names[i])) return true;
		}
		
		return false;
	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值