欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java利用htmlparser獲取html中想要的代碼具體實(shí)現(xiàn)

 更新時(shí)間:2014年02月13日 16:11:47   作者:  
這篇文章主要介紹了java利用htmlparser獲取html中想要的代碼具體實(shí)現(xiàn),需要的朋友可以參考下

這兩天需要做一些東西,需要抓取別人網(wǎng)頁(yè)中的一些信息。最后用htmlparser來(lái)解析html。

直接從代碼中看吧:

首先需要注意導(dǎo)入包為:import org.htmlparser下面的包

復(fù)制代碼 代碼如下:

List<Mp3> mp3List = new ArrayList<Mp3>();
        try{
            Parser parser = new Parser(htmlStr);//初始化Parser,這里要注意導(dǎo)入包為org.htmlparser。這里參數(shù)有很多。這個(gè)地方我寫(xiě)的是提前獲取好的html文本。也可以傳入U(xiǎn)Rl對(duì)象
            parser.setEncoding("utf-8");//設(shè)置編碼機(jī)
            AndFilter filter =
                new AndFilter(
                              new TagNameFilter("div"),
                             new HasAttributeFilter("id","songListWrapper")
              );//通過(guò)filter找到div且div的id為songListWrapper

              NodeList nodes = parser.parse(filter);//通過(guò)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();//通過(guò)TagNode獲得屬性,只有將Node轉(zhuǎn)換為T(mén)agNode才能獲取某一個(gè)標(biāo)簽的屬性
                  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();
            }

以上是我在項(xiàng)目中解析的東西,使用還是比較簡(jiǎn)單的,容易上手。
              ////claStr為bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '113275822', 'sname': '我的要求不算高', 'author': '黃渤

則是從網(wǎng)頁(yè)中解析到的內(nèi)容。

相關(guān)文章

  • java實(shí)現(xiàn)excel和txt文件互轉(zhuǎn)

    java實(shí)現(xiàn)excel和txt文件互轉(zhuǎn)

    本篇文章主要介紹了java實(shí)現(xiàn)excel和txt文件互轉(zhuǎn)的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • 2021年最新Redis面試題匯總(1)

    2021年最新Redis面試題匯總(1)

    在程序員面試過(guò)程中redis相關(guān)的知識(shí)是常被問(wèn)到的話題。這篇文章主要介紹了幾道Redis面試題,整理一下分享給大家,感興趣的小伙伴們可以參考一下
    2021-07-07
  • MyBatis @Param注解的實(shí)現(xiàn)

    MyBatis @Param注解的實(shí)現(xiàn)

    本文主要介紹了MyBatis @Param注解的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • IDEA修改生成jar包名字的兩種方法實(shí)現(xiàn)

    IDEA修改生成jar包名字的兩種方法實(shí)現(xiàn)

    本文主要介紹了IDEA修改生成jar包名字的兩種方法實(shí)現(xiàn),通過(guò)簡(jiǎn)單的步驟,您可以修改項(xiàng)目名稱并在打包時(shí)使用新的名稱,具有一定的參考價(jià)值,感興趣的可以了解下
    2023-08-08
  • Java中對(duì)XML的解析詳解

    Java中對(duì)XML的解析詳解

    目前我知道的JAVA解析XML的方式有:DOM, SAX, StAX;如果選用這幾種,感覺(jué)還是有點(diǎn)麻煩;如果使用:JAXB(Java Architecture for XML Binding),個(gè)人覺(jué)得太方便了
    2013-05-05
  • 理解 Java 核心基礎(chǔ)精髓解析

    理解 Java 核心基礎(chǔ)精髓解析

    這篇文章主要介紹了解 Java 核心基礎(chǔ)精髓解析問(wèn)題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-03-03
  • SpringBoot項(xiàng)目如何打war包問(wèn)題詳解

    SpringBoot項(xiàng)目如何打war包問(wèn)題詳解

    傳統(tǒng)的部署方式:將項(xiàng)目打成war包,放入tomcat的webapps目錄下面,啟動(dòng)tomcat,即可訪問(wèn).文中有非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)springboot的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • SpringBoot項(xiàng)目在啟動(dòng)后自動(dòng)關(guān)閉的實(shí)現(xiàn)

    SpringBoot項(xiàng)目在啟動(dòng)后自動(dòng)關(guān)閉的實(shí)現(xiàn)

    我們?cè)趯?xiě)spring?boot?web項(xiàng)目時(shí),有時(shí)會(huì)遇到啟動(dòng)后立即關(guān)閉的情況,?本文主要介紹了SpringBoot項(xiàng)目在啟動(dòng)后自動(dòng)關(guān)閉的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Java 跳出遞歸循環(huán)問(wèn)題解決辦法

    Java 跳出遞歸循環(huán)問(wèn)題解決辦法

    這篇文章主要介紹了 Java 跳出遞歸循環(huán)問(wèn)題解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Java矢量隊(duì)列Vector使用示例

    Java矢量隊(duì)列Vector使用示例

    Vector類實(shí)現(xiàn)了一個(gè)動(dòng)態(tài)數(shù)組。和ArrayList很相似,但是兩者是不同的Vector是同步訪問(wèn)的;Vector包含了許多傳統(tǒng)的方法,這些方法不屬于集合框架
    2023-01-01

最新評(píng)論