简单的 利用 parser 获取页面信息

来源:互联网 发布:2017机顶盒直播软件 编辑:程序博客网 时间:2024/06/05 12:05

这其实是  要入库  所以 放在了 service层里 还传入了 service对象 因为

好像 spring 不能注入线程里 而且 control里 开了线程 去 获取页面信息 所以传入了 service 对象


获取页面信息的 时候  基础 就是  利用各种不同的 node的过滤器 去 过滤页面信息

过滤出自己需要的信息

<!-- htmlparser -->
        <dependency>
            <groupId>org.htmlparser</groupId>
            <artifactId>htmlparser</artifactId>
            <version>1.6</version>
        </dependency>

需要的jar包


public class ParserUtil {

    public static void start(String surl,AppService as) throws ParserException{
        Parser parser = new Parser(surl);
        parser.setEncoding("UTF-8");
        
        
        HasAttributeFilter hasAttributeFilter = new HasAttributeFilter("class", "autoword");
        NodeList parse = parser.parse(hasAttributeFilter);
        for (int i = 0; i < parse.size(); i++) {
            String attribute = ((TagNode)parse.elementAt(i)).getAttribute("href");
            String url = "http://mm.10086.cn"+attribute;
            returnOne(url,as);
        }
    }
    
    public static void returnOne(String url,AppService as) throws ParserException{
        try {
            Parser parser = new Parser(url);
            parser.setEncoding("UTF-8");
            
            App app = new App();
            App_pic app_pic = new App_pic();
            
            //应用名称
            NodeFilter tagNameFilter = new TagNameFilter("title");
            
            NodeList titleList = parser.parse(tagNameFilter);
            String apptitle = titleList.elementAt(0).toPlainTextString().split("-")[0];
            System.out.println("应用名称:"+apptitle);
            app.setAppname(apptitle);
            
            //每次都要重置
            parser.reset();
            
            
            
            parser.reset();
            //应用图标
            HasAttributeFilter appicon = new HasAttributeFilter("id","appicon");
            NodeList iconlist = parser.parse(appicon);
            String iconsrc = ((TagNode)iconlist.elementAt(0)).getAttribute("src");
            String type = iconsrc.substring(iconsrc.lastIndexOf("."));
            String icon = UUID.randomUUID().toString().replaceAll("-","");
            String iconname = "d:\\appImg\\"+icon+"-title"+type;
            HttpUtil.httpDownload(iconsrc, iconname);
            //System.out.println(iconname);
            app.setAppicon("/"+icon+ "-title"+type);
            
            parser.reset();
            //应用信息
            HasAttributeFilter infoFilter = new HasAttributeFilter("class", "mj_info font-f-yh");
            HasParentFilter ul = new HasParentFilter(infoFilter);
            NodeList parse = parser.parse(ul);
            NodeList children = parse.elementAt(0).getChildren();
            for (int i = 0; i < children.size()-1; i++) {
                if(i==0){
                    String text = children.elementAt(i).toPlainTextString();
                    int length = text.length();
                    text =text.substring(0,length-3);
                    app.setDownloadNums(text);
                    //System.out.println(text);
                }else if(i==1){
                    String text = children.elementAt(i).toPlainTextString();
                    boolean contains = text.contains("¥");
                    if(contains){
                        text = text.substring(text.indexOf("¥"));
                    }else{
                        text = text.substring(text.length()-2);
                    }
                    app.setPrice(text);
                }else if(i==2){
                    String text = children.elementAt(i).toPlainTextString().substring(5);
                    app.setVersion(text);
                    //System.out.println(text);
                }else if(i==3){
                    String text = children.elementAt(i).toPlainTextString().substring(5);
                    app.setFilesize(text);
                    //System.out.println(text);
                }else if(i==5){
                    String text = children.elementAt(i).toPlainTextString().substring(5);
                    app.setApptype(text);
                    //System.out.println(text);
                }else if(i==6){
                    String text = children.elementAt(i).toPlainTextString().substring(5);
                    //System.out.println(text);
                    app.setUpdatetime(text);
                }else if(i==4){
                    String text = children.elementAt(i).toPlainTextString();
                    int indexOf = text.indexOf(":");
                    String j = text.substring(indexOf+1);
                    //System.out.println(j);
                    app.setDeveloper(j);
                }else{
                    String text = children.elementAt(i).toPlainTextString().substring(5);
                    app.setPlatform(text);
                    //System.out.println(text);
                }
            }
            
            
            parser.reset();
            //下载路径
            HasAttributeFilter downurlFilter1 = new HasAttributeFilter("title", "下载到本地");
            NodeList downlist = parser.parse(downurlFilter1);
            String apkurl = "";
            if(downlist.size()==0){
                apkurl = "此为收费app,请登录下载";
            }else{
                apkurl = ((TagNode)downlist.elementAt(0)).getAttribute("href");
            }
            app.setApkurl(apkurl);
            
            
            parser.reset();
            //二维码url
            String eid = UUID.randomUUID().toString().replaceAll("-","");
            String erwei = "/"+eid+".jpg";
            Erer.createQRCode(apkurl,"d:\\appEewei\\"+eid+".jpg",iconname);
            //System.out.println(erwei);
            app.setCodeurl(erwei);
            
            parser.reset();
            //应有介绍 内容
            HasAttributeFilter appinfoFilter = new HasAttributeFilter("class","mj_yyjs font-f-yh");
            NodeList appinfoList = parser.parse(appinfoFilter);
            String appinfo = appinfoList.elementAt(0).toPlainTextString();
            //System.out.println(appinfo);
            app.setDescription(appinfo);
            
            //
            //System.out.println(app);
            as.saveApp(app);
            //
            Integer id = app.getId();
            //System.out.println(id);
            app_pic.setApp(id);
            
            parser.reset();
            //应用介绍图
            HasAttributeFilter lunbo = new HasAttributeFilter("class", "mj_img");
            HasParentFilter lunboParent = new HasParentFilter(lunbo);
            
            NodeList iconList = parser.parse(lunboParent);
            for (int i = 0; i < iconList.size(); i++) {
                String attribute = ((TagNode)iconList.elementAt(i)).getAttribute("src");
                String houzhui = attribute.substring(attribute.lastIndexOf("."));
                String uu = UUID.randomUUID().toString().replaceAll("-","");
                String iname = "d:\\appImg\\"+ uu +houzhui;
                app_pic.setPicurl("/"+uu+houzhui);
                HttpUtil.httpDownload(attribute, iname);
                as.saveApp_pic(app_pic);
                //System.out.println(app_pic);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
    
    
}
0 0
原创粉丝点击