java 使用正则表达式从网页上提取网站标题 (转载)

来源:互联网 发布:tcl网络电视进不了系统 编辑:程序博客网 时间:2024/05/18 04:04

  1. package catchhtml;  
  2. import java.io.BufferedReader;  
  3. import java.io.IOException;  
  4. import java.io.InputStreamReader;  
  5. import java.net.MalformedURLException;  
  6. import java.net.URL;  
  7. import java.util.ArrayList;  
  8. import java.util.List;  
  9. import java.util.regex.Matcher;  
  10. import java.util.regex.Pattern;  
  11.   
  12.   
  13. public class GetHtmlTitle {  
  14.       
  15.     public GetHtmlTitle(String htmlUrl){  
  16.         System.out.println("/n------------开始读取网页(" + htmlUrl + ")-----------");  
  17.         String htmlSource = "";  
  18.         htmlSource = getHtmlSource(htmlUrl);//获取htmlUrl网址网页的源码  
  19.         System.out.println("------------读取网页(" + htmlUrl + ")结束-----------/n");  
  20.         System.out.println("------------分析(" + htmlUrl + ")结果如下-----------/n");  
  21.         String title = getTitle(htmlSource);  
  22.         System.out.println("网站标题: " + title);  
  23.     }  
  24.       
  25.     /** 
  26.      * 根据网址返回网页的源码 
  27.      * @param htmlUrl 
  28.      * @return 
  29.      */  
  30.     public String getHtmlSource(String htmlUrl){  
  31.         URL url;      
  32.         StringBuffer sb = new StringBuffer();  
  33.         try{  
  34.             url = new URL(htmlUrl);  
  35.             BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));//读取网页全部内容  
  36.             String temp;  
  37.             while ((temp = in.readLine()) != null)  
  38.             {             
  39.                 sb.append(temp);  
  40.             }  
  41.             in.close();  
  42.         }catch (MalformedURLException e) {  
  43.             System.out.println("你输入的URL格式有问题!请仔细输入");  
  44.         }catch (IOException e) {  
  45.             e.printStackTrace();  
  46.         }     
  47.         return sb.toString();  
  48.     }  
  49.       
  50.     /** 
  51.      * 从html源码(字符串)中去掉标题 
  52.      * @param htmlSource 
  53.      * @return 
  54.      */  
  55.     public String getTitle(String htmlSource){  
  56.         List<String> list = new ArrayList<String>();  
  57.         String title = "";  
  58.           
  59.         //Pattern pa = Pattern.compile("<title>.*?</title>", Pattern.CANON_EQ);也可以  
  60.         Pattern pa = Pattern.compile("<title>.*?</title>");//源码中标题正则表达式  
  61.         Matcher ma = pa.matcher(htmlSource);  
  62.         while (ma.find())//寻找符合el的字串  
  63.         {  
  64.             list.add(ma.group());//将符合el的字串加入到list中  
  65.         }  
  66.         for (int i = 0; i < list.size(); i++)  
  67.         {  
  68.             title = title + list.get(i);  
  69.         }  
  70.         return outTag(title);  
  71.     }  
  72.       
  73.     /** 
  74.      * 去掉html源码中的标签 
  75.      * @param s 
  76.      * @return 
  77.      */  
  78.     public String outTag(String s)  
  79.     {  
  80.         return s.replaceAll("<.*?>""");  
  81.     }  
  82.       
  83.     public static void main(String[] args) {  
  84.         String htmlUrl = "http://www.157buy.com";  
  85.         new GetHtmlTitle(htmlUrl);  
  86.   
  87.     }  
  88. }  
0 0
原创粉丝点击