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();
            }
        }
    }
  • 相关阅读:
    资源 | 辟谣平台
    数据分析常用思维
    数据分析常用工具
    杂谈 | 标准化和个性化
    杂谈 | 学以致用
    杂谈 | 工具思维的陷阱
    杂谈 | 习得性无助&习得性乐观
    spark连接mysql
    spark累加器
    java操作excel数据写入map集合并按照value排序
  • 原文地址:https://www.cnblogs.com/mnight/p/3677651.html
Copyright © 2011-2022 走看看