java利用htmlparser获取html中想要的代码具体实现
java利用htmlparser获取html中想要的代码具体实现
发布时间:2016-12-28 来源:查字典编辑
摘要:这两天需要做一些东西,需要抓取别人网页中的一些信息。最后用htmlparser来解析html。直接从代码中看吧:首先需要注意导入包为:imp...

这两天需要做一些东西,需要抓取别人网页中的一些信息。最后用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));

//}

}

}

//System.out.println(matcher.find());

}

}catch(Exception e){

e.printStackTrace();

}

以上是我在项目中解析的东西,使用还是比较简单的,容易上手。

////claStr为bb-dotimg clearfix song-item-hook { 'songItem': { 'sid': '113275822', 'sname': '我的要求不算高', 'author': '黄渤

则是从网页中解析到的内容。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Java学习
热门Java学习
编程开发子分类