最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

這兩天需要做一些東西,需要抓取別人網(wǎng)頁中的一些信息。最后用htmlparser來解析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ù)有很多。這個地方我寫的是提前獲取好的html文本。也可以傳入URl對象
            parser.setEncoding("utf-8");//設(shè)置編碼機(jī)
            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轉(zhuǎn)換為TagNode才能獲取某一個標(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();
            }

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

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

相關(guān)文章

  • 如何使用intellij IDEA搭建Spring Boot項目

    如何使用intellij IDEA搭建Spring Boot項目

    這篇文章主要介紹了如何使用intellij IDEA搭建Spring Boot項目,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Rabbit消息重試機(jī)制問題記錄

    Rabbit消息重試機(jī)制問題記錄

    消息重試機(jī)制就是在消息處理失敗之后重新發(fā)送,主要時為了解決消息發(fā)送過程可能會出現(xiàn)的問題,例如 網(wǎng)絡(luò)故障、服務(wù)臨時不可用 等,這篇文章主要介紹了Rabbit消息重試機(jī)制問題記錄,需要的朋友可以參考下
    2024-08-08
  • Java中幾種常用數(shù)據(jù)庫連接池的使用

    Java中幾種常用數(shù)據(jù)庫連接池的使用

    數(shù)據(jù)庫連接池在編寫應(yīng)用服務(wù)是經(jīng)常需要用到的模塊,太過頻繁的連接數(shù)據(jù)庫對服務(wù)性能來講是一個瓶頸,使用緩沖池技術(shù)可以來消除這個瓶頸,本文就來介紹Java常見的幾種,感興趣的可以了解一下
    2021-05-05
  • SpringBoot集成Redis實現(xiàn)驗證碼的簡單案例

    SpringBoot集成Redis實現(xiàn)驗證碼的簡單案例

    本文主要介紹了SpringBoot集成Redis實現(xiàn)驗證碼的簡單案例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 淺析Java中的虛擬線程

    淺析Java中的虛擬線程

    在本篇文章中,小編將帶大家深入了解Java虛擬線程的原理、如何使用、使用的注意事項以及其他相似技術(shù)的差別,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • SpringBoot的HTTPS配置實現(xiàn)

    SpringBoot的HTTPS配置實現(xiàn)

    本文主要介紹了SpringBoot的HTTPS配置實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java超級實用的Freemarker工具類

    Java超級實用的Freemarker工具類

    這篇文章主要介紹了Java超級實用的Freemarker工具類,文章圍繞相關(guān)資料介紹以及代碼描述非常詳細(xì),需要的小伙伴可以參考一下,希望對你得學(xué)習(xí)有所幫助
    2022-02-02
  • SSH框架網(wǎng)上商城項目第20戰(zhàn)之在線支付平臺

    SSH框架網(wǎng)上商城項目第20戰(zhàn)之在線支付平臺

    這篇文章主要為大家詳細(xì)介紹了SSH框架網(wǎng)上商城項目第20戰(zhàn)之在線支付平臺,關(guān)于第三方支付的內(nèi)容從本文開始,感興趣的小伙伴們可以參考一下
    2016-06-06
  • SpringBoot?緩存預(yù)熱的實現(xiàn)

    SpringBoot?緩存預(yù)熱的實現(xiàn)

    本文主要介紹了SpringBoot?緩存預(yù)熱的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2007-11-11
  • 詳解 Java HashMap 實現(xiàn)原理

    詳解 Java HashMap 實現(xiàn)原理

    這篇文章主要介紹了詳解 Java HashMap 實現(xiàn)原理的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-03-03

最新評論

万源市| 光山县| 太湖县| 崇信县| 汝城县| 大足县| 博湖县| 山西省| 乌拉特前旗| 定南县| 威远县| 隆子县| 双柏县| 历史| 新竹市| 兴隆县| 丰原市| 临洮县| 双柏县| 衡南县| 醴陵市| 慈利县| 江山市| 响水县| 通渭县| 灵川县| 香河县| 彭水| 高州市| 吉安市| 鲜城| 曲靖市| 海阳市| 清徐县| 宁陵县| 宣化县| 临朐县| 正安县| 长治县| 灵璧县| 剑阁县|