|
这两天需要做一些东西,需要抓取别人网页中的一些信息。最后用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("[swa-z-]+{'songItem':{'sid':'([d]+)','sname':'([sS]*)','author':'([sS]*)'}}"); 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)); / (编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|