加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java利用htmlparser获取html中想要的代码具体实现

发布时间:2020-12-14 19:45:42 所属栏目:Java 来源:网络整理
导读:这两天需要做一些东西,需要抓取别人网页中的一些信息。最后用htmlparser来解析html。 直接从代码中看吧: 首先需要注意导入包为:import org.htmlparser下面的包 复制代码 代码如下: ListMp3 mp3List = new ArrayListMp3(); try{ Parser parser = new Parse

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

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

您可能感兴趣的文章:

  • AndroidHttpClient使用Cookie应用分析
  • C# HttpClient Cookie验证解决方法
  • Android HttpClient GET或者POST请求基本使用方法
  • Android下通过httpClient发送GET和POST请求的实例代码
  • java使用httpclient发送post请求示例
  • java使用httpclient模拟post请求和get请求示例
  • java使用htmlparser提取网页纯文本例子
  • Python中使用HTMLParser解析html实例
  • 基于Java HttpClient和Htmlparser实现网络爬虫代码

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读