zoukankan      html  css  js  c++  java
  • 自己圈养小爬虫(三)——提取链接2

    提取链接1里面,我们提取了fromURL,即当前URL的路径,用来对相对路径进行处理。但是很快就发现了还有另外一种情况,即:href="/a/b/1.html"这种路径。
     
    在开头的地方有个斜杠,表面这个路径是相对于根目录的,所以必须要提取出当前URL的根目录才行,建立一个变量:rootURL。

    /**
    * 处理来源URL,得到URL目录和根目录
    */
    private void getRootURL(){
        if(fromURL.indexOf("/", 8) > 0){
            fromURL = fromURL.substring(0, fromURL.lastIndexOf("/") + 1);
        }else{
            fromURL = fromURL + "/";
        }
        rootURL = fromURL.substring(0, fromURL.indexOf("/", 8));
    }

     
    把上次提取URL的方法进行改进,就完成了URL的提取,其中包括HTTP链接和图片链接。把提取出来的数据,存入URL_LIST和IMAGE_LIST容器中。
     

    /**
    * 通过正则表达式,提取URL
    */
    private void regexURL(String code){
        Matcher urls = pattern.matcher(code);
        //System.out.println("URL_NUM:" + urls.group().length());       
        String tmpurl = "";
        boolean isImg = false;
        while(urls.find()){
            tmpurl = urls.group();
            if(tmpurl.indexOf("src=") == 0){
                isImg = true;
            }else{
                isImg = false;
            }
            tmpurl = tmpurl.substring(tmpurl.indexOf("=") + 2, tmpurl.lastIndexOf("""));
            if(isImg){
                //如果是图片,则判断图片的格式
                if(Config.IMAGE_TYPES.indexOf(tmpurl.substring(tmpurl.lastIndexOf(".") + 1)) < 0){
                    continue;
                }
            }
            if(tmpurl.indexOf("http://") < 0){
                if(tmpurl.substring(0, 1).equalsIgnoreCase("/")){
                    tmpurl = rootURL + tmpurl;
                }else{
                    tmpurl = fromURL + tmpurl;
                }
            }           
            try {
                if(isImg){
                    URLFactory.IMAGE_LIST.put(tmpurl);
                }else{
                    URLFactory.URL_LIST.put(tmpurl);
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    Vue的条件渲染详解
    Vue的style绑定
    Vue的class绑定总结
    v-model详解
    MUI手势锁
    mysql主从搭建
    处理绿盟科技安全评估的系统漏洞
    微信小程序发送ajax
    微信小程序上拉下拉刷新
    微信小程序覆盖自定义组件样式
  • 原文地址:https://www.cnblogs.com/mnight/p/3677651.html
Copyright © 2011-2022 走看看