問題與思考:在項(xiàng)目中需要獲取h5頁面中圖片的url,方便將url取出在分享界面使用。要完成這個(gè)目標(biāo),就要涉及到解析html。下面我會(huì)從三個(gè)方面來完成這個(gè)需求。
基本配置
將“TFHpple”拖入工程

引入靜態(tài)庫文件

添加Header Search Paths

思路
TFHpple.h中有這樣一個(gè)方法:
- (id) initWithData:(NSData *)theData isXML:(BOOL)isDataXML{ return [self initWithData:theData encoding:nil isXML:isDataXML];}
這里需要我們傳入一個(gè)data類型,如何獲得這樣一個(gè)數(shù)據(jù)
NSURL * url = [NSURL URLWithString:@"http://api.967111.com/meeting/stateDetail.do?stateId=321&schoolId=2522"] ;
NSURLRequest * request = [NSURLRequest requestWithURL:url] ;
NSData * htmlData = [NSData dataWithContentsOfURL:url] ;
TFHpple * htmls = [[TFHpple alloc]initWithData:htmlData isXML:YES] ;
利用請(qǐng)求頭獲得htmlData,將他轉(zhuǎn)換成TFHpple類型的數(shù)據(jù),此時(shí)的HTMLData中就已經(jīng)包含網(wǎng)頁中所有的數(shù)據(jù)了。
使用
我們要解析的網(wǎng)址是: http://api.967111.com/meeting/stateDetail.do?stateId=321&schoolId=2522 ,在Google Chrome中打開開發(fā)者工具

看到我們的目標(biāo)了嗎?圖片的url近在眼前,該怎么獲得它嘞?
回到TFHpple里的文檔,通過遍歷htmlData中的數(shù)據(jù)
NSArray * dataArray = [htmls searchWithXPathQuery:@"http://img"] ;
for (TFHppleElement * element in dataArray) {
if ([[element objectForKey:@"class"]isEqualToString:@"img-rounded carousel-inner img-responsive img-rounded"]) {
NSLog(@" tag ==== %@",element.tagName) ;
NSLog(@"raw ====== %@",element.raw) ;
sstr = [element.attributes objectForKey:@"src"] ;
NSLog(@"sstr ====== %@", sstr) ;
}
}
這里的//img, class, img-rounded carousel-inner img-responsive img-rounded,分別對(duì)應(yīng)

中的img,class,img-rounded carousel-inner img-responsive img-rounded。img稱為為節(jié)點(diǎn),class稱為節(jié)點(diǎn)屬性,img-rounded carousel-inner img-responsive img-rounded稱為節(jié)點(diǎn)屬性值,sstr里的內(nèi)容就是節(jié)點(diǎn)內(nèi)容。打印一下看結(jié)果:

不足之處還望指正
Demo: __ https://github.com/msmsmsmsmsmsms/Demo_JS-OC-TFHpple__
以上。