JS與OC交互之TFHpple

問題與思考:在項(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é)果:
在外界定義一個(gè)值來接收這個(gè)
sstr也就是我們所需要的圖片的url就可以了。

不足之處還望指正

Demo: __ https://github.com/msmsmsmsmsmsms/Demo_JS-OC-TFHpple__

以上。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評(píng)論 19 139
  • Documentation Supported OS & SDK Versions 支持的OS & SDK版本 S...
    c5550ea746f8閱讀 4,601評(píng)論 0 2
  • Bootstrap 是基于H5利用 JS和CSS 進(jìn)行布局、提供插件、動(dòng)畫的一個(gè)框架。使用了JQuery進(jìn)行DOM...
    軒居晨風(fēng)閱讀 1,031評(píng)論 0 5
  • 你會(huì)怎樣形容一個(gè)朋友? 客觀,因?yàn)榕笥验g的信任不需要虛假。 多少加點(diǎn)恭維,因?yàn)榕笥训母星橐惨S護(hù),都希望更長(zhǎng)久。 ...
    貪癡舍閱讀 351評(píng)論 0 2
  • 最近在看《我的前半生》以前沒有明白的道理一下子明白了很多,說蒼蠅不叮無縫蛋看完才知道有些東西在失去的時(shí)候總...
    未ai來的路閱讀 260評(píng)論 0 1

友情鏈接更多精彩內(nèi)容