<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    夢(mèng)幻之旅

    DEBUG - 天道酬勤

       :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      671 隨筆 :: 6 文章 :: 256 評(píng)論 :: 0 Trackbacks
    今天晚上,幫我一個(gè)同門師兄,解決一下問(wèn)題.
    題目是,抓取一個(gè)網(wǎng)站的所以頁(yè)面,并抓下這些頁(yè)碼的所有網(wǎng)址.
    代碼如下:
    package com.hwp.test;

    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class SearchEngine
    {
        
    private Map<String, List<String>> pageNameUrls;
        
        
    public SearchEngine()
        
    {
            pageNameUrls 
    = new HashMap<String, List<String>>();
        }

        
        
    private String getContent(String httpUrl)
        
    {
            String htmlCode 
    = "";
            
    try
            
    {
                InputStream in;
                URL url 
    = new java.net.URL(httpUrl);
                HttpURLConnection connection 
    = (HttpURLConnection) url
                        .openConnection();
                connection 
    = (HttpURLConnection) url.openConnection();
                connection.setRequestProperty(
    "User-Agent""Mozilla/4.0");
                connection.connect();
                in 
    = connection.getInputStream();
                
    byte[] buffer = new byte[512];
                
    int length = -1;
                
    while ((length = in.read(buffer, 0512)) != -1)
                
    {
                    htmlCode 
    += new String(buffer, 0, length);
                }

            }

            
    catch (Exception e)
            
    {}
            
    if (htmlCode == null)
            
    {
                
    return "";
            }

            
    return htmlCode;
        }

        
        
    private List<String> getPageUrls(String page)
        
    {
            List
    <String> urls = new ArrayList<String>();
            String content 
    = this.getContent(page);
             
            String reg 
    = "http://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";
            Pattern pattern 
    = Pattern.compile(reg);
            Matcher matcher 
    = pattern.matcher(content);
            
            String url 
    = "";
            
    while (matcher.find())
            
    {
                url 
    = matcher.group();
                
    if (!urls.contains(url))
                
    {
                    urls.add(url);
                }

            }

            
    return urls;
        }

        
        
    public void test(String url, String baseUrl)
        
    {
            String content 
    = this.getContent(url);
            
    // System.out.println(content);
            String reg = "(" + baseUrl
                    
    + "(/[\\w-]+)*(/[\\w-]+\\.(htm|html|xhtml|jsp|asp|php)))";
            Pattern pattern 
    = Pattern.compile(reg);
            Matcher matcher 
    = pattern.matcher(content);
            
    while (matcher.find())
            
    {
                String tempUrl 
    = matcher.group();
                
    if (!this.pageNameUrls.containsKey(tempUrl))
                
    {
                    
    //System.out.println(tempUrl);
                    this.pageNameUrls.put(tempUrl, this.getPageUrls(tempUrl));
                    test(tempUrl, baseUrl);
                }

            }

        }

        
        
    public static void main(String[] args)
        
    {
            String url 
    = "http://www.tkk7.com";
            String baseUrl 
    = "http://www.tkk7.com";
            SearchEngine se 
    = new SearchEngine();
            se.test(url, baseUrl);
            Map
    <String, List<String>> map= se.pageNameUrls;
            Set
    <Map.Entry<String, List<String>>> set = map.entrySet();
            
    for(Map.Entry<String, List<String>> entry: set)
            
    {
                System.out.println(entry.getKey());
                System.out.println(entry.getValue());
            }

        }

    }

    posted on 2008-07-14 23:24 HUIKK 閱讀(404) 評(píng)論(0)  編輯  收藏 所屬分類: Regular Exp

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 青青操免费在线观看| 国产精品亚洲天堂| 国产性生大片免费观看性| 国产美女a做受大片免费| 亚洲 欧洲 日韩 综合在线| 亚洲精品视频在线免费| 亚洲日本视频在线观看| 免费人成在线观看69式小视频| 久热综合在线亚洲精品| 久久永久免费人妻精品| 亚洲美女视频一区二区三区| 老汉精品免费AV在线播放| 亚洲视频小说图片| 99久久99久久精品免费看蜜桃| 亚洲日本国产精华液| 野花高清在线电影观看免费视频| 亚洲第一成人在线| 午夜毛片不卡免费观看视频| 亚洲GV天堂GV无码男同| 四虎影视精品永久免费| 久久er国产精品免费观看8| 久久久久亚洲av无码专区蜜芽| 57pao国产成永久免费视频| 最新亚洲卡一卡二卡三新区| 国产无遮挡色视频免费视频| www一区二区www免费| 精品亚洲A∨无码一区二区三区| 国产精品1024永久免费视频| 亚洲精品国产首次亮相| 国产亚洲色婷婷久久99精品91| 全免费a级毛片免费看| 亚洲三级高清免费| 国产成人精品亚洲精品| 99久久精品免费精品国产| 亚洲一日韩欧美中文字幕在线| 四虎亚洲国产成人久久精品 | 日韩免费a级在线观看| 人人爽人人爽人人片av免费| 亚洲欧洲国产精品香蕉网| 青青视频观看免费99| 一级美国片免费看|