2012年1月1日 星期日

iOS - 爬 HTML

目標
  • 抓取網頁HTML
  • 分析HTML
工具
  • libxml2: iOS原有的library,parse xml
  • 點選紅框標示的地方
    點選紅框標示的地方,最後使用“+”把libxml2加入


    在紅框的地方搜尋“other linker”,再加入“-lxml2”參數

  • Hpple: 開源碼,幫助分析HTML
    • Download
    • 將資料夾中的TFHpple, TFHppleElement, XPathQuery複製到要開發的資料夾中
    • 再加入“-fno-objc-arc”參數關閉ARC功能

範例
- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
    
    NSError* error;

    // 取得yahoo首頁的HTML
    NSData* data = [[NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.yahoo.com.tw"] encoding:NSUTF8StringEncoding error:&error] dataUsingEncoding:NSUTF8StringEncoding];

    // 取出title標籤中的值
    TFHpple* parser = [[TFHpple alloc] initWithHTMLData:data];   
    NSArray* values  = [parser searchWithXPathQuery:@"//title"]; // get the title
    TFHppleElement* value = [values objectAtIndex:0];
    NSString* result = [value content];

    NSLog(@"result = %@", result);
    mLabel.text = result
}

問題
  • Compile後會發生"<libxml/tree.h> not found"
    • 解:在Header search path中加入“${SDKROOT}/usr/include/libxml2”參數(${SDKROOT}會自動變為root路徑)
先在搜尋欄中搜尋“header search",再將參數輸入


結果

2 則留言: