標籤: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資料