Java正则表达二(匹配网页标签)

  写了一个小程序抓取到了百度新闻首页的源码。接下来要获取新闻页网址。

  分析发现,网址大多嵌在<li>标签里的<a>标签中。首先通过正则表达获取<li>标签。

 1 import java.io.IOException;
 2 import java.io.InputStream;
 3 import java.io.UnsupportedEncodingException;
 4 import java.util.regex.Matcher;
 5 import java.util.regex.Pattern;
 6 
 7 public class main {
 8 
 9     public static void main(String[] args) throws UnsupportedEncodingException{
10         MyClass myClass = new MyClass();  //自己写的类 获取网页代码
11         String webPageSource = null;       //网页源码
12         InputStream in = null;
13         
14         try {
15             in = myClass.getWebPage("http://news.baidu.com/");
16             webPageSource  = myClass.inputStream2String(in);  //流转换字符串
17         } catch (IOException e) {
18             System.out.println(e);
19         }
20         
21         /**
22          * java.util.regex包是有关正则表达的包,主要包含以下三个类
23          * Pattern类
24          * pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法.
25          * 要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法pattern.comile(),它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
26          * Matcher 通过pattern 对象.Matcher();获取对象
27          * 
28          */
29         
30         String regex = "<li[^>n].*>[\\s\\S]+?</li>";   //正则表达式
31         Pattern pattern = Pattern.compile(regex);
32         Matcher matcher = pattern.matcher(webPageSource);
33         //循环匹配
34         while(matcher.find()){        
35             for(int i=0;i<=matcher.groupCount();i++)
36                 System.out.println(MyClass.String2UTF8(matcher.group(i)));
37         }
38         
39 
40     }
41 
42 }

运行效果:<li>标签及其子标签全部匹配

 

posted @ 2017-12-17 14:35  我要吃冰棍  阅读(310)  评论(0编辑  收藏  举报