请叫我峰子:
感受VPS建站的乐趣。

使用正则获取html页面任意标签内容

首先是两个正则表达式:

1.<[^>]+>:这个正则表达式可以匹配所有html标签,可以100%匹配(注意页面编码方式和读取的编码方式)。

2.>[^<]+<:这个可以匹配标签内容,本人对正则不是很熟悉,因而只是简单的将第一个正则表达式反了过来,匹配出来的结果都会带着><,如果有更好的正则表达式,希望可以告诉我。

下面上程序:

[java]

  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.net.URL;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6. public class URLTest {
  7.     /**
  8.      * @param args
  9.      * @throws URISyntaxException 
  10.      */
  11.     public static void main(String[] args) throws Exception {
  12.         URL url = new URL(“http://www.ascii-code.com/”);
  13.         InputStreamReader reader = new InputStreamReader(url.openStream());
  14.         BufferedReader br = new BufferedReader(reader);
  15.         String s = null;
  16.         while((s=br.readLine())!=null){
  17.             s = GetLabel(s);
  18.             if(s!=null){
  19.                 System.out.println(s);
  20.             }
  21.         }
  22.         br.close();
  23.         reader.close();
  24.     }
  25.     public static String GetContent(String html) {
  26.         //String html = “<ul><li>1.hehe</li><li>2.hi</li><li>3.hei</li></ul>”;
  27.         String ss = “>[^<]+<“;
  28.         String temp = null;
  29.         Pattern pa = Pattern.compile(ss);
  30.         Matcher ma = null;
  31.         ma = pa.matcher(html);
  32.         String result = null;
  33.         while(ma.find()){
  34.             temp = ma.group();
  35.             if(temp!=null){
  36.                 if(temp.startsWith(“>”)){
  37.                     temp = temp.substring(1);
  38.                 }
  39.                 if(temp.endsWith(“<“)){
  40.                     temp = temp.substring(0, temp.length()-1);
  41.                 }
  42.                 if(!temp.equalsIgnoreCase(“”)){
  43.                     if(result==null){
  44.                         result = temp;
  45.                     }
  46.                     else{
  47.                         result+=“____”+temp;
  48.                     }
  49.                 }
  50.             }
  51.         }
  52.         return result;
  53.     }
  54.     public static String GetLabel(String html) {
  55.         //String html = “<ul><li>1.hehe</li><li>2.hi</li><li>3.hei</li></ul>”;
  56.         String ss = “<[^>]+>”;
  57.         String temp = null;
  58.         Pattern pa = Pattern.compile(ss);
  59.         Matcher ma = null;
  60.         ma = pa.matcher(html);
  61.         String result = null;
  62.         while(ma.find()){
  63.             temp = ma.group();
  64.             if(temp!=null){
  65.                 if(temp.startsWith(“>”)){
  66.                     temp = temp.substring(1);
  67.                 }
  68.                 if(temp.endsWith(“<“)){
  69.                     temp = temp.substring(0, temp.length()-1);
  70.                 }
  71.                 if(!temp.equalsIgnoreCase(“”)){
  72.                     if(result==null){
  73.                         result = temp;
  74.                     }
  75.                     else{
  76.                         result+=“____”+temp;
  77.                     }
  78.                 }
  79.             }
  80.         }
  81.         return result;
  82.     }
  83. }

 

GetContent用来获取标签内容。

GetLabel用来获取标签。

赞(0) 打赏
转载请注明:峰网博客 » 使用正则获取html页面任意标签内容

评论 抢沙发

评论前必须登录!

 

网站建设

企业专线联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏