关闭

使用NodeVisitor访问HTML页面的TAG

2057人阅读 评论(0) 收藏 举报
     上次所说的使用Filter同时访问formtag和linktag是不行的,实际上有这样一种东西,可以访问任意tag--------Nodevisitor。下边这个程序是DOC上边的,我只是改了下,使得可以符合我的需要,访问linktag和formtag:
 import org.htmlparser.Parser;
 import org.htmlparser.Tag;
 import org.htmlparser.tags.LinkTag;
 import org.htmlparser.tags.FormTag;
 import org.htmlparser.Text;
 import org.htmlparser.util.ParserException;
 import org.htmlparser.visitors.NodeVisitor;
 
 public class MyVisitor extends NodeVisitor
 {
     public MyVisitor ()
     {
     }

     public void visitTag (Tag tag)
     {
         if (tag instanceof LinkTag)
         {
             System.out.println("a ->" + ((LinkTag)tag).extractLink());
         }
         else if (tag instanceof FormTag)
         {
             System.out.println("form ->" + ((FormTag)tag).extractFormLocn());
         }
     }

     public static void main (String[] args) throws ParserException
     {
         Parser parser = new Parser (args[0]);
         parser.setEncoding("GB2312");
         NodeVisitor visitor = new MyVisitor ();
         parser.visitAllNodesWith (visitor);
     }
 }

解析器会自动地调用visitTag方法,对每个tag进行判断,对需要的进行必要的操作。
好东西吧,再研究更有意义点的操作,由他发散就行了。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:171044次
    • 积分:2760
    • 等级:
    • 排名:第12969名
    • 原创:99篇
    • 转载:9篇
    • 译文:0篇
    • 评论:26条
    文章分类
    最新评论