日期:2014-05-17  浏览次数:20682 次

关于htmlparser运用,求高手,在线等,加班的人伤不起啊!!!
我想利用HTMLparser抓取内容 抓取内容为如果页面<a>标签下有<img>标签,则获得<a>标签的href 和 <img>标签的引用图片、
 如果<a>标签下不含有<img>则不获取。两个数据分别存在list集合里.
求高手啊,分不是问题。纠结了好几天了

------解决方案--------------------
正则表达式把 你获取的 内容 一个个扣出来
------解决方案--------------------
没感觉用HTMLParser会有啥严重的问题啊?

跟你操作DOM文档对象基本上已经是一样方便了,无非是多几个IF判断。

NodeFilter filter = new TagNameFilter("A");
nodelist = nodelist.ExtractAllNodesThatMatch(filter, true);

穷举所有A标签,然后检查该A标签下是否有IMG子标签,有就保存起来呗。
------解决方案--------------------
探讨

很纠结,如果用正则表达式就话,取得的就会有好多不想要的,说不清楚,不知是谁设计的网页,那么难抓。

------解决方案--------------------
try this
Java code

        String str = "<li class=\"center\"><a href=\"http://hi.csdn.net/ever089010\" target=\"_blank\" onclick='LogClickCount(this,111);'><img src=\"http://avatar.profile.csdn.net/5/3/8/2_ever089010.jpg\" onmouseover=\"try{showUserCard(this,'ever089010')}catch(ex){};\"/></a></li>"
                + "<li title=\"总技术分:0;总技术排名:499417\"><dfn><a href=\"http://hi.csdn.net/ever089010\" target=\"_blank\" onclick='LogClickCount(this,111);'>ever089010</a></dfn></li>"
                + "<li class=\"center\"><a href=\"http://hi.csdn.net/ever089010\" target=\"_blank\" onclick='LogClickCount(this,111);'><img src=\"http://avatar.profile.csdn.net/5/3/8/2_ever089010.jpg\" onmouseover=\"try{showUserCard(this,'ever089010')}catch(ex){};\"/></a></li>"
                + "<li title=\"总技术分:0;总技术排名:499417\"><dfn><a href=\"http://hi.csdn.net/ever089010\" target=\"_blank\" onclick='LogClickCount(this,111);'>ever089010</a></dfn></li>";

        Pattern pattern = Pattern.compile("<a\\s[^<]*href=\"([^\"]*)\"\\s[^<]*<img\\s[^<]*src=\"([^\"]*)\"\\s[^<]*</a>");
        Matcher matcher = pattern.matcher(str);

        List<String> linkList=new ArrayList<String>();
        List<String> picList=new ArrayList<String>();

        while (matcher.find()) {
            linkList.add(matcher.group(1));
            picList.add(matcher.group(2));
            System.out.println(matcher.group(1));
            System.out.println(matcher.group(2));
            System.out.println("==========");
        }

------解决方案--------------------
正则啊,楼主都没给出想抓那个网页……