iOS 解析HTML資料

來源:互聯網
上載者:User

標籤:isequal   raw   attr   解析   開始   nbu   undle   geo   nts   

  因為項目需要,今天特地查閱了 一些對HTML解析的文章,文章不算少,只是有的內容不是很全面,不太夠用,在此將他們補充到一起。

一、首先 先在項目中匯入TFHpple  連結:https://github.com/zgGitHub/TFHpple

  1、添加libxml2.tbd庫

  2、添加一些路徑 在TAGER中的Build Setting中 找到 Hesder Search Paths 輸入兩個路徑 一個是libxml2.tbd庫在你的項目中的路徑;另一個是 $(SDKROOT)/usr/include/libxml2

  comment+b 查看是否運行正常

二、1、匯入三個標頭檔 

    

#import "XPathQuery.h"    #import "TFHpple.h"    #import "TFHppleElement.h"

 

  2、首先將網頁的html轉換成oc能夠認識的NSString資料;

    (1)如果你的HTML頁面是儲存在項目中的,用如下方法:

      

NSString *dataString = [NSString stringWithContentsOfFile:[[NSBundle       mainBundle]pathForResource:@"瀑布流" ofType:@"html"] encoding:NSUTF8StringEncoding error:nil];

 

    (2)如果是從網路上請求的 用這個方法:

     

 NSString *dataString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.lomowo.com/posts/47632"] encoding:NSUTF8StringEncoding error:nil];

 

  3、如果不想整篇幅的取值 ,可以截取自己想要的內容

   

NSRange rang1=[dataString rangeOfString:@"<div class=\"content\">"];      NSMutableString *imageStr2=[[NSMutableString alloc]initWithString:[dataString substringFromIndex:rang1.location+rang1.length]];          NSRange rang2=[imageStr2 rangeOfString:@"<div class=\"clear\">"];      NSMutableString *imageStr3=[[NSMutableString alloc]initWithString:[imageStr2 substringToIndex:rang2.location]];          NSLog(@"%@",imageStr3);

  imageStr3:

 

    

  4、將dataString轉換成NSData,給TFHpple類用

 NSData *data=[imageStr3 dataUsingEncoding:NSUTF8StringEncoding];

  5、根據標籤<p>找到自己想要的代碼塊

 TFHpple *xpathParser = [[TFHpple alloc]initWithHTMLData:data];    // 根據標籤進行篩選 擷取所有標籤是<p>的代碼塊     NSArray *elements  = [xpathParser searchWithXPathQuery:@"//p"];    NSMutableArray *contArray = [[NSMutableArray alloc]init];

  6、擷取想要的標籤內容

//開始整理資料    for (TFHppleElement *elsement in elements) {        if ([elsement content] != nil) {            if (![[elsement objectForKey:@"style"]isEqualToString:@"text-align"]) {//篩選屬性是裡有style 並且值是text-align的標籤                                //列印出該節點的所有內容  包括標籤                NSLog(@"%@",elsement.raw);                //列印出該節點的所有內容   不包括標籤                NSLog(@"%@",elsement.text);            }        }    }

  得到的結果:

 

  7、擷取想要的標籤屬性

  //開始整理資料    for (TFHppleElement *elsement in elements) {        if ([elsement content] != nil) {                        //將這段代碼轉換成字典  key是標籤內的屬性  value是屬性對應的值            //得到的是標籤屬性  不能得到標籤內容            NSDictionary *elementContent =[elsement attributes];            NSLog(@"-----------%@",elementContent);                        if (elementContent != nil) {                [contArray addObject:[elementContent objectForKey:@"style"]];            }                   }    }

  得到的結果:

 

iOS 解析HTML資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.