最近做的一个项目中,其中有这样一个需求:用户要求我们实时在地图上显示某些指定景点的人数,但是却没有给我们数据的接口。不过可以从网页上获取到最新的数据,每小时更新一次。所以经理安排我做一个实时从网页上抓取数据的功能。
既然是网页,那么无用的数据肯定是非常多的,所以就需要用正则表达式来过滤出自己所需要的数据。
不得不说,正则表达式比substring好用多了,而且效率也很不错。下面来分享一下我的这段代码吧:
- /**
- *从网站获取日期信息
- *
- *@Title:getDate
- *@Date:2014-8-12上午09:42:26
- *@return
- */
- privateStringgetDate(){
- //从网站抓取数据
- Stringtable=catchData();
- Stringdate="";
- //使用正则表达式,获取对应的数据
- Patternplaces=Pattern.compile("(<palign=\"center\">)([^\\s]*)");
- Matchermatcher=places.matcher(table);
- while(matcher.find()){
- System.out.println(matcher.group(2));
- date=matcher.group(2);
- }
- returndate;
- /**
- *从网站抓取数据(未经处理)
- *
- *@Title:getData
- *@Date:2014-8-12上午09:34:30
- *@return
- */
- @SuppressWarnings("unchecked")
- privateStringcatchData(){
- Stringtable="";
- try{
- Mapmap=newHashMap();
- map.put("a","1");//莫删,否则报错
- table=AsyncRequestUtil.getJsonResult(map,"http://s.visitbeijing.com.cn/flow.PHP");
- }catch(Exceptione){
- e.printStackTrace();
- returntable;
- }
【AsyncRequestUtil.java】