HTML資料解析

來源:互聯網
上載者:User

標籤: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>&nbsp;</h4><p>&nbsp;</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;方法來取得。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.