HtmlParserUtil 解析HTML文本

 

 

import java.util.ArrayList;
import java.util.List;

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.nodes.TagNode;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;

public class ParserUtil {
    
	
	/**
	 * 根据标签名称 和属性值 获取 
	 * @param <T>
	 * @param html
	 * @param tagType 
	 * @param attributeName
	 * @param attributeValue
	 * @return
	 */
	public static <T extends TagNode> List<T> parsTags(String html, final Class<T> tagType,  final String attributeName, final String attributeValue) {
		try {
			Parser parser = new Parser();
			parser.setInputHTML(html);
			NodeList tagList =parser.parse(
				new NodeFilter(){
					@Override
						public boolean accept(Node node) {
							if(node.getClass()== tagType){
							  	T tn = (T)node;
							  	if(attributeName == null){
							  		return true;
							  	}
							  	String attrValue = tn.getAttribute(attributeName);
							  	if(null != attrValue && attrValue.equals(attributeValue)){
							  		return true;
							  	}
							}
							return false;
						}
					}	
					
		    );
			
			
			List<T> tags= new ArrayList<T>();
		     for(int i=0; i< tagList.size(); i++){
		    	T t = (T)tagList.elementAt(i);
		    	tags.add(t);
		     }
			
			return tags;
			
		} catch (ParserException e) {
			e.printStackTrace();
		}
        return null;
	}
	
	
	
	public static <T extends TagNode> List<T> parsTags(String html, final Class<T> tagType) {
		return parsTags(html,tagType,null ,null);
	}
	
	
	/**
	 * 获取单个唯一标签
	 * @param <T>
	 * @param html
	 * @param tagType
	 * @param attributeName
	 * @param attributeValue
	 * @return
	 */
	public static <T extends TagNode> T parsTag(String html, final Class<T> tagType,  final String attributeName, final String attributeValue) {
		 List<T> tags = parsTags(html,tagType, attributeName, attributeValue);
		 if(tags != null && tags.size()>0){
			 return tags.get(0);
		 }
		 return null;
	}
	
	
	public void getimg(String html){
		try {
			Parser parser = new Parser();
			parser.setInputHTML(html);
			NodeList  imageTags = parser.parse(new NodeClassFilter(ImageTag.class));
			for(int i=0; 1<imageTags.size(); i++){
				ImageTag it = (ImageTag) imageTags.elementAt(i);
				String imageUrl = it.getImageURL();
				System.out.print(imageUrl);
			}
			
			
		} catch (ParserException e) {
			e.printStackTrace();
		}
	}
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值