一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java利用htmlparser獲取html中想要的代碼具體實現

java利用htmlparser獲取html中想要的代碼具體實現

2019-11-06 11:32java教程網 JAVA教程

這篇文章主要介紹了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': '黃渤

則是從網頁中解析到的內容。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产欧美目韩成人综合 | 91精品啪在线观看国产日本 | 操到翻白眼 | 久久水蜜桃亚洲AV无码精品偷窥 | 国产东北3p真实在线456视频 | 韩国日本在线观看 | 99国产精品热久久久久久夜夜嗨 | chinesespank调教| 欧美在线视频一区 | 精品一区二区91 | 久草在线福利资站免费视频 | 免费在线观看成年人视频 | 欧美一区欧美二区 | gaygayas男男免费中国 | 武侠古典久久亚洲精品 | 麻豆视频免费在线播放 | 冰雪奇缘1完整版免费观看 变形金刚第一部 | 2019自拍偷拍视频 | 青青青草国产 | 亚洲精品乱码久久久久久蜜桃 | 亚欧洲乱码视频一二三区 | 好湿好滑好硬好爽好深视频 | 国产一卡2卡3卡4卡公司科普 | 欧美在线一级视频 | 日本高清视频一区二区 | 热99re国产久热在线 | 日本暖暖在线 | 9久热久爱免费精品视频在线观看 | 国产一区二区在线看 | 射逼视频| 久久精品免视看国产 | 免费人成在线观看69式小视频 | 久久亚洲精品AV成人无 | 午夜福利合集1000在线 | 国产在线精品99一卡2卡 | 涩色爱 | 亚洲第一区在线观看 | 91禁漫 | 国产美女久久精品香蕉69 | 欧美裸妇| 91色porny|