注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Search的博客

不断学习中!

 
 
 

日志

 
 

关于网页的简单解析  

2012-11-03 21:25:52|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
以前就实验过这个代码但是没有怎么注意里面的细节,现在仔细慢慢一步一步的调试,发现不少细节问题值得注意,mark。

package code.lxy.test;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;


public class GetInternet {

    /**
     * 获得网页中的超链接
     * @author letthinking
     * @param urlStr url 例如:http://blog.csdn.net/yue19870813?viewmode=list
     * @return List<String>
     */
    public List<String> getInternet(String urlStr){
        List<String> list = new ArrayList<String>();
        URL url = null;
        URLConnection conn = null;
        String nextLine = null;
        StringTokenizer tokenizer = null;
        try{
            //获得网页资源
            url = new URL(urlStr);
            //获得资源连接
            conn = url.openConnection();
            conn.connect();
            BufferedReader reader = new BufferedReader(new
                    InputStreamReader(conn.getInputStream()));
            //开始读取网页信息解析出网页中的超链接
            while((nextLine = reader.readLine()) != null ){
                tokenizer = new StringTokenizer(nextLine);
                while(tokenizer.hasMoreTokens()){
                    String urlToken = tokenizer.nextToken();
                    if(isUrl(urlToken)){
                        list.add(getHttp(urlToken));
                    }
                }
            }
            
        }catch(Exception e){
            
        }
        return list;
    }
    
    /**
     * 判断字符串中是否含有超链接
     * @author letthinking
     * @param urlToken
     * @return
     */
    public boolean isUrl(String urlToken){
        if(urlToken.indexOf("http") != -1){
            return true;
        }
        return false;
    }
    
    /**
     * 将字符串中超链接提取出来
     * @author letthinking
     * @param urlToken
     * @return
     */
    public String getHttp(String urlToken){
        int start = urlToken.indexOf("http");
        int end = urlToken.length();
        String tempStr = urlToken.substring(start,end);
        //“/“”转义字符,可以看到在网页中所有的超链接都是由“”引起的(除js文件外)
        end = tempStr.indexOf("\"");
        //由于js文件是由单引号括起来的,所以需要附加没有找到双引号的条件
        if(end == -1){
            end = tempStr.length();
        }
        return tempStr.substring(0,end);
    }
    
    public static void main(String[] args){
        GetInternet g = new GetInternet();
        List<String> list = g.getInternet("http://www.csdn.net/");
        System.out.println("开始输出超链接");
        for(String str:list){
            System.out.println(str);
        }
        //System.out.println(g.getHttp("<link rel=\"stylesheet\" href=\"http://csdnimg.cn/www/css/main_new.css?20110813\" type=\"text/css\" media=\"all\" />"));
    }
}
  评论这张
 
阅读(95)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017