好贷网好贷款

java利用htmlparser获取html中想要的代码

发布时间:2016-12-3 17:45:28 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"java利用htmlparser获取html中想要的代码",主要涉及到java利用htmlparser获取html中想要的代码方面的内容,对于java利用htmlparser获取html中想要的代码感兴趣的同学可以参考一下。

这两天需要做一些东西,需要抓取别人网页中的一些信息。最后用htmlparser来解析html。 直接从代码中看吧: 首先需要注意导入包为:import org.htmlparser下面的包                                                                                 List<Mp3> mp3List = new ArrayList<Mp3>();         try{             Parser parser = new Parser(htmlStr);//初始化Parser,这里要注意导入包为org.htmlparser。这里参数有很多。这个地方我写的是提前获取好的html文本。也可以传入URl对象             parser.setEncoding("utf-8");//设置编码机             AndFilter filter =                 new AndFilter(                               new TagNameFilter("div"),                              new HasAttributeFilter("id","songListWrapper")               );//通过filter找到div且div的id为songListWrapper               NodeList nodes = parser.parse(filter);//通过filter获取nodes               Node node = nodes.elementAt(0);               NodeList nodesChild = node.getChildren();               Node[] nodesArr = nodesChild.toNodeArray();               NodeList nodesChild2 = nodesArr[1].getChildren();               Node[] nodesArr2 = nodesChild2.toNodeArray();               Node nodeul = nodesArr2[1];               Node[] nodesli = nodeul.getChildren().toNodeArray();//解析出nodesli为想要的                                          for(int i=2;i<nodesli.length;i++){                   //System.out.println(nodesli[i].toHtml());                   Node tempNode =  nodesli[i];                   TagNode tagNode = new TagNode();//通过TagNode获得属性,只有将Node转换为TagNode才能获取某一个标签的属性                   tagNode.setText(tempNode.toHtml());                   String claStr = tagNode.getAttribute("class");//claStr为bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '113275822', 'sname': '我的要求不算高', 'author': '黄渤' } }                   claStr = claStr.replaceAll(" ", "");                   if(claStr.indexOf("\\?")==-1){                       Pattern pattern = Pattern.compile("[\\s\\wa-z\\-]+\\{'songItem':\\{'sid':'([\\d]+)','sname':'([\\s\\S]*)','author':'([\\s\\S]*)'\\}\\}");                       Matcher matcher = pattern.matcher(claStr);                       if(matcher.find()){                           Mp3 mp3 = new Mp3();                           mp3.setSid(matcher.group(1));                           mp3.setSname(matcher.group(2));                           mp3.setAuthor(matcher.group(3));                           mp3List.add(mp3);                           //for(int j=1;j<=matcher.groupCount();j++){                               //System.out.print("   "+j+"--->"+matcher.group(j));                           //}                       }                   }                   //System.out.println(matcher.find());               }             }catch(Exception e){                 e.printStackTrace();             } 以上是我在项目中解析的东西,使用还是比较简单的,容易上手。               ////claStr为bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '113275822', 'sname': '我的要求不算高', 'author': '黄渤 则是从网页中解析到的内容。

上一篇:android Activity中设置setResult 没有触发onActivityResult
下一篇:采用FLAG_ACTIVITY_CLEAR_TOP退出整个程序(多activity)

相关文章

相关评论