標籤:style blog http color io 檔案 資料 ar
HTML資料解析 用到開原始碼 HTMLParser :HTMLNode.m HTMLNode.h HTMLParser.m HTMLParser.h
到這個網址可以找到: https://github.com/
解析你的資料前還有三步:
1在工程中添加libxml2的庫
2: 在Header Search Path中添加/usr/include/libxml2
3: 將開原始碼加入到工程中去。並在引入標頭檔
這樣我們就能開始解析 HTML的資料了
首先我們隨便下載一個 HTML的資料。(這裡是舉例 所以就用簡單的同步下載,在自己的應用要用非同步下載)
NSURL *url=[NSURL URLWithString:@"http://vip.astro.sina.com.cn/iframe/astro/view/cancer/day/"]; NSString *htmlStr=[[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; NSError *error; //解析HTML文檔 //建立一個 HTMLParser的對象 HTMLParser *parser = [[HTMLParser alloc] initWithString:str error:&error]; if (error) { NSLog(@"%@", error); return; }
上面就將HTML資料 放到一個 HTMLParser的對象裡面去了。
這裡展示這個HTML資料的內容(這裡進行一定的刪減 對我們完全沒用的去掉了)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>巨蟹座_每日運勢_星座頻道_新浪網</title><link href="http://vip.astro.sina.com.cn/app/astro/css/mindcity_utf8.css" rel="stylesheet" type="text/css" /></head><body><div id="west"><div id="middle2"><div class="lot"><div class="left" id="weiboimg"><img src="http://image2.sina.com.cn/ast/2007index/tmp/star_php/cancer_b.gif" border="0" align="left" /><span>巨蟹座<em>06/22-07/22</em></span></div>作者 宇情 新浪獨家撰稿</cite></div><div class="clear"></div><ul class="daysnav"><li class= "buton" ><a href=‘/astro/view/cancer/day/20140816‘>今日運勢</a></li><li class= "butof" ><a href=‘/astro/view/cancer/day/20140817‘>明日運勢</a></li><li class="datea">有效日期:2014-08-16</li></ul><div class="tab"><h4>愛情運勢</h4><div class="clear"></div><div class="tab"><h4>健康指數</h4><p>79%</p></div><div class="tab"><h4>商談指數</h4><p>84%</p></div><div class="clear"></div><div class="tab"><h4>幸運顏色</h4><p>白色</p></div><div class="tab"><h4>幸運數字</h4><p>2</p></div><div class="clear"></div><div class="tab"><h4>速配星座</h4><p>獅子座</p></div><div class="tab"><h4> </h4><p> </p></div><div class="clear"></div></div><div class="clear"></div><div class="lotconts">外型上的豔麗讓內在也增添性感魅力,除此之外還有才智一起的相乘作用,不僅美麗,還會美得很有智慧喲。
而今天對女性而言將你的感性運用在創作上將可獲得不錯的評價喔,像是手工藝等需要巧手與心思細密的興趣
嗜好有好作品可期的預感呢。</div></div><!-- 星座運勢內容end --><div class="clear"></div></div></div></body></html>
現在我們就可以用HTMLParse裡的方法的進行一步一步的解析了
//擷取HTML的body部分 HTMLNode *node = [parser body]; //在node的基礎上,找到並取得總結的那段話 HTMLNode *sum=[node findChildOfClass:@"lotconts" ];//這個方法就是尋找一個屬性,名字叫"lotconts"的節點 //在node的基礎上,找到並取擷取有效日期 HTMLNode *effectdate=[node findChildOfClass :@"datea"]; //在node的基礎上,找到並取擷取星座名字 HTMLNode *name=[node findChildTag:@"span"];//這個方法就是尋找一個標籤叫"span"的節點
//在node的基礎上,找到並取擷取星座時間段
HTMLNode *time=[name findChildTag:@"em"];
//擷取星座圖片的連結
HTMLNode *image=[node findChildTag:@"img"];
NSString *pic=[image getAttributeNamed:@"src"];
NSURL *url1=[NSURL URLWithString:pic];
// 得到節點的內容
[name contents];//返回的就是一個字串 在這裡內容就是:巨蟹座
//同理
[sum contents];//內容就是:外型上的豔麗讓內在也增添性感魅力,除此之外還有才智一起的相乘作用,不僅美麗,還會美得很有智慧喲。
而今天對女性而言將你的感性運用在創作上將可獲得不錯的評價喔,像是手工藝等需要巧手與心思細密的興趣
嗜好有好作品可期的預感呢。
HTML資料的解析就是根據:標籤(tag),屬性(Attribute)來利用HTMLParser裡的方法,找到我們需要的子節點。
要記得我們最後找到的都是子節點,我們要取得內容還是要-(NSString*)contents;方法來取得。