java 正则网页_[原]java正则表达式匹配网页页面数据

最近做项目一直在和正则表达式打交道,也有一些心得,特此记录下来。用正则表达式抓取网页上需要的东西,这里用的QQ音乐里面的一些数据为例。

publicclassRadio {publicstaticvoidmain(String[] args) {

String url="http://music.qq.com/miniportal/static/qqdt/dt_program.html";

AnalysisStream stream=newAnalysisStream();

String content=stream.download(url);//获取网页源码Radio radio=newRadio();

String str=radio.g_programList(content);//用正则表达式匹配出需要的数据str=str.replaceAll(":",":");//将字符串中的:替换成 :str=str.replaceAll(".",".");//将字符串中的.替换成.str=str.replaceAll(" ","");//将字符串中 替换成空格str=str.substring(str.indexOf("["),str.indexOf(";"));//截取字符传中的[]里面的内容//这里得到的结果如下:

[{id:0,name:"动感101",desc:"上海FM101.7",pic:"http://imgcache.qq.com/minimusic_v5/img/dt_dg_logo.jpg",url:"mms://diantai.smgbb.cn/dg101",program:"音乐爱联播",time:"06:00—07:00",week:"周六至周日"},

{id:0,name:"厦门音乐广播",desc:"厦门FM90.9",pic:"http://imgcache.qq.com/minimusic_v5/img/dt_xiameng_logo.jpg",url:"mms://mediasrv2.iptv.xmg.com.cn/yinyue",program:"古典也疯狂",time:"08:00—09:00",week:"周六至周日"},

{id:0,name:"深圳飞扬971",desc:"珠三角 FM97.1",pic:"http://imgcache.qq.com/minimusic_v5/img/dt_97_logo.jpg",url:"rtspt://vod.szr.com.cn/szr_2",program:"好歌送给你",time:"08:00—10:00",week:"周六至周日"},

{id:0,name:"深圳飞扬971",desc:"珠三角 FM97.1",pic:"http://imgcache.qq.com/minimusic_v5/img/dt_97_logo.jpg",url:"rtspt://vod.szr.com.cn/szr_2",program:"生日最快乐",time:"07:00—08:00",week:"周一至周五"},....]

System.out.println(str);

String[] info=radio.splitString(str);//将字符串转换成字符串数组,这里用json转换成JsonArray比较容易,但是找了半天没找到jar包就自己用了一个用切割字符串的方法来处理了for(inti=0;i1){

String secondinfo=info[i].replaceAll("\"","");//去掉字符串中的双引号String[] secondinfos=splitCate(secondinfo,",");//再次切割字符串得到数组for(intj=0;j

System.out.println(secondinfos[j]);

}

}

}

}/*** 正则表达式匹配出需要的数据

*@paramcontent 页面源码

*@return得到需要的数据字符串*/privateString g_programList(String content){

String info=null;

Pattern pattern=Pattern.compile("var g_programList = [\\s\\S]+?];");

Matcher matcher=pattern.matcher(content);if(matcher.find()){

String content_li=matcher.group();

info=content_li;

}returninfo;

}/*** 将字符串转换成字符数组

*@paramcontent

*@return*/publicString[] splitString(String content){

StringTokenizer commaToker=newStringTokenizer(content,"[{*}]");

String[] result=newString[commaToker.countTokens()];intk=0;while(commaToker.hasMoreTokens()) {

result[k]=commaToker.nextToken();

k++;

}returnresult;

}/*** 指定的方式切割指定的字符串

*@paramcontent 要切割的字符串

*@paramsplit 切割方式

*@return字符串数组*/publicstaticString[] splitCate(String content,String split){

StringTokenizer commaToker=newStringTokenizer(content, split);

String[] result=newString[commaToker.countTokens()];intk=0;while(commaToker.hasMoreTokens()) {

result[k]=commaToker.nextToken();

k++;

}returnresult;

}

}

最终的到的数据如下:

id:0

name:动感101

desc:上海FM101.7

pic:http://imgcache.qq.com/minimusic_v5/img/dt_dg_logo.jpg

url:mms://diantai.smgbb.cn/dg101

program:音乐爱联播

time:06:00—07:00

week:周六至周日

id:0

name:厦门音乐广播

desc:厦门FM90.9

pic:http://imgcache.qq.com/minimusic_v5/img/dt_xiameng_logo.jpg

url:mms://mediasrv2.iptv.xmg.com.cn/yinyue

program:古典也疯狂

time:08:00—09:00

week:周六至周日

id:0

name:深圳飞扬971

desc:珠三角 FM97.1

pic:http://imgcache.qq.com/minimusic_v5/img/dt_97_logo.jpg

url:rtspt://vod.szr.com.cn/szr_2

program:好歌送给你

time:08:00—10:00

week:周六至周日

……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值