用正則表達式提取網頁中的鏈接

          個人感覺效率肯定還能進一步提高。。。。
          不過實在是對正則不是太熟悉,只好暫時這樣了。

          代碼如下:

           1    /** The regex for search link with the tag "a" */
           2    private final String A_REGEX = "<a.*?/a>";
           3    /** The regex for search url with the tag "href" */
           4    private final String HREF_REGEX = "href=\".*?\"";
           5    /** The pattern for linke with the tag "a" */
           6    private final Pattern A_PATTERN = Pattern.compile(A_REGEX);
           7    /** The pattern for url with the tag "href" */
           8    private final Pattern HREF_PATTERN = Pattern.compile(HREF_REGEX);
           9    /**
          10     * Get url address from the url and the content of the url
          11     * @param url the url need to be get links
          12     * @param content the content of the given url
          13     * @return a list with the url address of the links
          14     */

          15    public List<String> getLinkList( URL url, String content )
          16    {
          17        List<String> linkList = new LinkedList<String>();
          18        final Matcher a_matcher = A_PATTERN.matcher(content);
          19        while (a_matcher.find()) 
          20        {
          21            //JUST FOR TEST!
          22//            System.out.println(a_matcher.group());
          23            //get url address
          24            final Matcher myurl = HREF_PATTERN.matcher(a_matcher.group());
          25            while (myurl.find())
          26            {
          27                String urlAddress = myurl.group().replaceAll("href=|>|\"|\"""");
          28                if( urlAddress.startsWith("http") )
          29                {
          30                    linkList.add(urlAddress);
          31                }

          32                else if( urlAddress.startsWith("/"|| urlAddress.startsWith("\\") )
          33                {
          34                    linkList.add(url.getPath()+urlAddress);
          35                }

          36                else
          37                {
          38                    String fullUrl = url.toString();
          39                    //the length of the url without the current page
          40                    int lastSlash = fullUrl.lastIndexOf("/"+ 1;
          41                    linkList.add(fullUrl.substring(0,lastSlash) + urlAddress);
          42                }

          43            }

          44        }

          45        return linkList;
          46    }

          posted on 2009-11-05 03:00 甜菜侯爵 閱讀(455) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2009年11月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 连城县| 古田县| 大新县| 富顺县| 仁化县| 平凉市| 万安县| 东乡族自治县| 盱眙县| 永平县| 含山县| 武夷山市| 汉源县| 当雄县| 开封市| 铜鼓县| 营口市| 涡阳县| 清水河县| 塔河县| 临漳县| 澜沧| 延长县| 南部县| 乌拉特前旗| 全州县| 岳池县| 南京市| 白水县| 芦溪县| 前郭尔| 长汀县| 白朗县| 额尔古纳市| 渑池县| 黔西县| 兴城市| 开平市| 邻水| 丹棱县| 龙里县|