iOS第三方HTML解析 TFHpple 的簡(jiǎn)單使用

準(zhǔn)備工作

1.導(dǎo)入TFHpple 2.引入靜態(tài)庫(kù)文件libxml2.2.dylib 3.PROJECT 中的 Search Path - header search paths添加 /usr/include/libxml2

解析步驟

1.初始化data 2.根據(jù)data創(chuàng)建TFHpple實(shí)例 3.查找節(jié)點(diǎn)存入數(shù)組 4.在該節(jié)點(diǎn)下 循環(huán)查找子節(jié)點(diǎn)

源HTML代碼:

<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>

    <td width="48" valign="top" align="center"><a href="/member/zhangyi2099"><img src="http://cdn.v2ex.co/avatar/d00c/ceb1/18330_normal.png?m=1345037943" class="avatar" border="0" align="default"></a></td>
    <td width="10"></td>

    <td width="auto" valign="middle"><span class="item_title"><a href="/t/228173#reply1">看了本「網(wǎng)球優(yōu)等生」</a></span>
    <div class="sep5"></div>
    <span class="small fade"><div class="votes"></div><a class="node" href="/go/acg">ACG</a>  ?  <strong><a href="/member/zhangyi2099">zhangyi2099</a></strong>  ?  20 分鐘前  ?  最后回復(fù)來(lái)自 <strong><a href="/member/yishanxin">yishanxin</a></strong></span>
    </td>
    <td width="70" align="right" valign="middle">

        <a href="/t/228173#reply1" class="count_livid">1</a>

    </td>
</tr>

</table>
Object-C代碼:

NSData *htmlData = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:@"http://www.xxx.com/xxxx?x=1"]];

TFHpple *xpathParser = [[TFHpple alloc]initWithHTMLData:htmlData];

pragma mark 每頁(yè)主題
NSArray *itemArray = [xpathParser searchWithXPathQuery:@"http://div[@class = 'cell item']"];

//通過(guò)for in 在itemArray數(shù)組中 循環(huán)查找子節(jié)點(diǎn) for (TFHppleElement *hppleElement in itemArray) {

/** 這段被正則表達(dá)代替 @"http://div[@class = 'cell item']"] if ([[hppleElement objectForKey:@"class" ] isEqualToString:@"cell item"]) { [self.allDataMutableArray addObject:hppleElement]; } /

pragma mark 子節(jié)點(diǎn)頭像
NSArray *IMGElementsArr = [hppleElement searchWithXPathQuery:@"http://img"];
for (TFHppleElement *tempAElement in IMGElementsArr) {
NSString *imgStr = [tempAElement objectForKey:@"src"];
NSString *subStr = [@"http:" stringByAppendingString:imgStr];
[self.avatarMutableArray addObject:subStr];
}
pragma mark 子節(jié)點(diǎn)標(biāo)題/鏈接
NSArray TitleElementArr = [hppleElement searchWithXPathQuery:@"http://span[@class='item_title']"]; for (TFHppleElement tempAElement in TitleElementArr) { //獲得標(biāo)題 NSString *titleStr = [tempAElement content];

//1.獲得子節(jié)點(diǎn)(正文連接節(jié)點(diǎn)) 2.獲得節(jié)點(diǎn)屬性值 3.加入到字典中
NSArray * arr = [tempAElement children];
TFHppleElement *href = arr.firstObject;
NSString * titleHrefStr = [href objectForKey:@"href"];

[self.allDataMutableDict setObject:titleStr forKey:@"title"];
self.allDataMutableDict[@"titleHref"] = titleHrefStr;

}
pragma mark 子節(jié)點(diǎn)fade
//簡(jiǎn)化寫(xiě)法 簡(jiǎn)化3步
NSArray *nodeElementArr = [hppleElement searchWithXPathQuery:@"http://a[@class='node']"];
self.allDataMutableDict[@"node"] = [nodeElementArr.firstObject content];

NSArray *fadeElementArr = [hppleElement searchWithXPathQuery:@"http://span[@class = 'small fade']"];
NSArray *subArray = [ [fadeElementArr.firstObject content] componentsSeparatedByString:@" ? "];

self.allDataMutableDict[@"louZhu"] = [subArray objectAtIndex:1];
self.allDataMutableDict[@"lastTime"] = [subArray objectAtIndex:2];
pragma mark 子節(jié)點(diǎn)回復(fù)數(shù)
NSArray * repeatElementArr = [hppleElement searchWithXPathQuery:@"http://a[@class = 'count_livid']"];
if ([repeatElementArr.firstObject content ]) {
self.allDataMutableDict[@"repeatCount"] = [repeatElementArr.firstObject content];
}else{
self.allDataMutableDict[@"repeatCount"] = [NSString stringWithFormat:@"%d",0];
}
pragma mark 轉(zhuǎn)化model 存進(jìn)數(shù)組
[model setValuesForKeysWithDictionary:self.allDataMutableDict];
[self.allDataMutableArray addObject:model];
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市途乃,隨后出現(xiàn)的幾起案子猎物,更是在濱河造成了極大的恐慌椭岩,老刑警劉巖权悟,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罚勾,死亡現(xiàn)場(chǎng)離奇詭異赤赊,居然都是意外死亡牡属,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)谎替,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)偷溺,“玉大人,你說(shuō)我怎么就攤上這事钱贯〈焯停” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵秩命,是天一觀(guān)的道長(zhǎng)尉共。 經(jīng)常有香客問(wèn)我,道長(zhǎng)硫麻,這世上最難降的妖魔是什么爸邢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任樊卓,我火速辦了婚禮拿愧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘碌尔。我一直安慰自己浇辜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布唾戚。 她就那樣靜靜地躺著柳洋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叹坦。 梳的紋絲不亂的頭發(fā)上熊镣,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼绪囱。 笑死测蹲,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鬼吵。 我是一名探鬼主播扣甲,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼齿椅!你這毒婦竟也來(lái)了琉挖?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤涣脚,失蹤者是張志新(化名)和其女友劉穎示辈,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體遣蚀,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡顽耳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妙同。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片射富。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖粥帚,靈堂內(nèi)的尸體忽然破棺而出胰耗,到底是詐尸還是另有隱情,我是刑警寧澤芒涡,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布柴灯,位于F島的核電站,受9級(jí)特大地震影響费尽,放射性物質(zhì)發(fā)生泄漏赠群。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一旱幼、第九天 我趴在偏房一處隱蔽的房頂上張望查描。 院中可真熱鬧,春花似錦柏卤、人聲如沸冬三。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)勾笆。三九已至,卻和暖如春桥滨,著一層夾襖步出監(jiān)牢的瞬間窝爪,已是汗流浹背弛车。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蒲每,地道東北人帅韧。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像啃勉,于是被迫代替她去往敵國(guó)和親忽舟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容