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();
}
}
}