Fork me on GitHub

iOS 開發: html parser 抓網頁資料

    

http://arekang.blog.sohu.com/186192921.html

我們有時候會從網路上拿一些 html 的資訊,一般稱叫做 crawler ,會自動從網路上爬資料下來,不用
自己產生相關的內容,這一篇文章就是做 crawler 的基礎

這次的任務是要拿到 html 裡面某個 metatag 的內容
我們目標抓取的內容是 中央氣象局英文版 (因為中文還要再做其他處理)
裡面的 <title>夾住的資料並顯示在 App 上面
<title>Central Weather Bureau Web Site</title>

本教學共分為三大步驟,分別是

第一步驟:安裝 libxml2
第二步驟: 安裝第三方 library hpple
第三步驟:設計 View 與 Controller


第一步驟:安裝 libxml2ibxml 是一個作為解析XML文檔的函數庫。它是用C語言寫的
請先開啟一個專案, 我是選擇 View-based Appication

再來進入 Project Setting, 你可以直接按 Groups & Files 的 Xcode icon ,也可以從 menu 進入

請進入  Build tab 然後在 search 框尋找 header search path

再來看到以下畫面後按下 + 增加 libxml 進入我們的 project 當中,再按下 okay 就會看到下面那張圖
"${SDKROOT}/usr/include/libxml2 記得勾選 Recursive

 

接下來要設定另一個參數,搜尋 Other Linker Flags

一樣增加 Flag 並輸入 –lxml2 為參數後按下 ok

如此一來就完成我們對於 xml 部份的配置


第二步驟:安裝第三方 library Hpplehpple 是一個 XML/HTML parser for Objective-C
我們可以直接取用這個 library 來加速我們程式的開發,直接取用 html 內容
請先到 這裡 去把 library 抓下來

資料夾解開後會有很多檔案,請把裡面的幾個重要檔案抓出來
TFHpple.h , TFHpple.m , TFHppleElement.h , TFHppleElement.m , XPathQuery.h , XPathQuery.m

並加入我們的專案當中

如此一來就把 hpple 加入我們的專案當中了


第三步驟:設計 View 與 Controller程式部份不長,首先請打開 .h 標頭檔,並加入以下 code

  • // .h 檔
  • #import <UIKit/UIKit.h>
  • #import "TFHpple.h"  
  • @interface htmlparserViewController : UIViewController {
  •     IBOutlet UILabel *mLabel;   }  
  • @end


   

  • // .m 檔

  • - (void)viewDidLoad {
  •     [super viewDidLoad];   NSError* error;
  •     NSData *htmlData = [[NSString stringWithContentsOfURL:[NSURL          
  •        URLWithString: @"http://www.cwb.gov.tw/eng/index.htm"]             
  •        encoding:NSASCIIStringEncoding error:&error]             
  •        dataUsingEncoding:NSUTF8StringEncoding];  
  •     TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlData];   
  •     NSArray *elements  = [xpathParser search:@"//title"]; // get the title
  •     TFHppleElement *element = [elements objectAtIndex:0];
  •     NSString *h1Tag = [element content];   NSLog(@"result = %@",h1Tag);
  •     mLabel.text = h1Tag;
  • }



接下來設計 UI , 請打開 xib 檔
先加入兩個 Label , 第一個 label 沒有互動,我們先輸入 “得到的資料為”
第二個 Label 放上去後請先調整大小,再來從 File’s Owner 按下 Control 拉線至該 label ,選擇 mLabel

如果一切都沒有問題,就可以測看看有沒有成功摟! 模擬器可以抓到該網站的 title 並顯示在 App 當中但是我如果是在 Device 上面做模擬,如果 iPhone 沒有開網路的話,就會發生問題,所以如果上傳到手機上面做測試的話請記得開啟你的網路喔。

恭喜你成功從網路上抓到資料。

posted on 2012-02-17 09:53  pengyingh  阅读(402)  评论(0)    收藏  举报

导航