在iPhone上解析HTML

时间:2011-04-09 01:52:38

标签: iphone html cocoa-touch parsing html-parsing

我想解析这个网站:

  

http://its.wonju.go.kr/movinginfo2/DetailSub/StopDetail.asp?StopID=1959#

所以我尝试使用TFHpple。像这样:

NSString *htmlWillInsert = [NSString stringWithContentsOfURL:
                            [NSURL URLWithString:@"http://its.wonju.go.kr/movinginfo2/DetailSub/StopDetail.asp?StopID=1959#"]
                                                    encoding:-2147481280
                                                       error:nil];

NSData *htmlData = [htmlWillInsert dataUsingEncoding:NSUnicodeStringEncoding];

TFHpple *xpathParser =[[TFHpple alloc] initWithHTMLData:htmlData];
NSArray *busNumbs = [xpathParser search:@"//td //a[@class='new']"];
NSLog (@"%@",busNumbs);

 for (int i=0;i<[busNumbs count];i++) {
    TFHppleElement *busNumb = [busNumbs objectAtIndex:i];
    NSString *Numb = [busNumb content];
    NSString *st = [[NSString alloc]initWithFormat:@"%@",Numb];
    NSLog(@"%@",st);
}

但它不起作用:(... ... 它加载<a href="#" onClick="MapMove(22);" class="new" onFocus='this.blur();'">▷ 22번(순환) 但它无法加载<font color='red'> 108분후 도착</font>
像这样:

2011-04-09 10:42:07.413 GangwonBus[5461:207] ▷ 1번(순환)
2011-04-09 10:42:07.414 GangwonBus[5461:207] ▷ 2번(순환)
2011-04-09 10:42:07.415 GangwonBus[5461:207] ▷ 21번(순환)
2011-04-09 10:42:07.415 GangwonBus[5461:207] ▷ 22번(순환)
2011-04-09 10:42:07.416 GangwonBus[5461:207] ▷ 23번(순환)
2011-04-09 10:42:07.417 GangwonBus[5461:207] ▷ 24번(순환)
2011-04-09 10:42:07.417 GangwonBus[5461:207] ▷ 25번(순환)
2011-04-09 10:42:07.422 GangwonBus[5461:207] ▷ 32번(순환)
2011-04-09 10:42:07.423 GangwonBus[5461:207] ▷ 41번(순환)
2011-04-09 10:42:07.424 GangwonBus[5461:207] ▷ 41-1번(순환)
2011-04-09 10:42:07.424 GangwonBus[5461:207] ▷ 42번(순환)
2011-04-09 10:42:07.425 GangwonBus[5461:207] ▷ 51번(순환)
2011-04-09 10:42:07.426 GangwonBus[5461:207] ▷ 52번(순환)
2011-04-09 10:42:07.426 GangwonBus[5461:207] ▷ 53번(순환)
2011-04-09 10:42:07.427 GangwonBus[5461:207] ▷ 54번(순환)
2011-04-09 10:42:07.428 GangwonBus[5461:207] ▷ 55번(순환)
2011-04-09 10:42:07.428 GangwonBus[5461:207] ▷ 56번(순환)
2011-04-09 10:42:07.429 GangwonBus[5461:207] ▷ 57번(순환)
2011-04-09 10:42:07.430 GangwonBus[5461:207] ▷ 58번(순환)
2011-04-09 10:42:07.430 GangwonBus[5461:207] ▷ 64번(기점 -> 종점)
2011-04-09 10:42:07.431 GangwonBus[5461:207] ▷ 70번(순환)
2011-04-09 10:42:07.432 GangwonBus[5461:207] ▷ 71번(순환)
2011-04-09 10:42:07.432 GangwonBus[5461:207] ▷ 72번(기점 -> 종점)
2011-04-09 10:42:07.433 GangwonBus[5461:207] ▷ 73번(순환)
2011-04-09 10:42:07.434 GangwonBus[5461:207] ▷ 74번(순환)
2011-04-09 10:42:07.434 GangwonBus[5461:207] ▷ 81-1번(순환)
2011-04-09 10:42:07.435 GangwonBus[5461:207] ▷ 82번(순환)
2011-04-09 10:42:07.435 GangwonBus[5461:207] ▷ 83번(순환)
2011-04-09 10:42:07.436 GangwonBus[5461:207] ▷ 84번(순환)
2011-04-09 10:42:07.437 GangwonBus[5461:207] ▷ 90번(순환)
2011-04-09 10:42:07.437 GangwonBus[5461:207] ▷ 91번(순환)

怎么了?

我想要这样解析:

2011-04-09 10:42:07.413 GangwonBus[5461:207] ▷ 1번(순환)
2011-04-09 10:42:07.414 GangwonBus[5461:207] ▷ 2번(순환)
2011-04-09 10:42:07.415 GangwonBus[5461:207] ▷ 21번(순환)
2011-04-09 10:42:07.415 GangwonBus[5461:207] ▷ 22번(순환)
2011-04-09 10:42:07.416 GangwonBus[5461:207] ▷ 23번(순환)
2011-04-09 10:42:07.417 GangwonBus[5461:207] ▷ 24번(순환)
2011-04-09 10:42:07.417 GangwonBus[5461:207] ▷ 25번(순환)
2011-04-09 10:42:07.422 GangwonBus[5461:207] ▷ 32번(순환)
2011-04-09 10:42:07.423 GangwonBus[5461:207] ▷ 41번(순환)
2011-04-09 10:42:07.424 GangwonBus[5461:207] ▷ 41-1번(순환)
2011-04-09 10:42:07.424 GangwonBus[5461:207] ▷ 42번(순환)
2011-04-09 10:42:07.425 GangwonBus[5461:207] ▷ 51번(순환)
2011-04-09 10:42:07.426 GangwonBus[5461:207] ▷ 52번(순환)
2011-04-09 10:42:07.426 GangwonBus[5461:207] ▷ 53번(순환)
2011-04-09 10:42:07.427 GangwonBus[5461:207] ▷ 54번(순환)
2011-04-09 10:42:07.428 GangwonBus[5461:207] ▷ 55번(순환)
2011-04-09 10:42:07.428 GangwonBus[5461:207] ▷ 56번(순환)
2011-04-09 10:42:07.429 GangwonBus[5461:207] ▷ 57번(순환)
2011-04-09 10:42:07.430 GangwonBus[5461:207] ▷ 58번(순환)
2011-04-09 10:42:07.430 GangwonBus[5461:207] ▷ 64번(기점 -> 종점)
2011-04-09 10:42:07.431 GangwonBus[5461:207] ▷ 70번(순환)
2011-04-09 10:42:07.432 GangwonBus[5461:207] ▷ 71번(순환)
2011-04-09 10:42:07.432 GangwonBus[5461:207] ▷ 72번(기점 -> 종점)
2011-04-09 10:42:07.433 GangwonBus[5461:207] ▷ 73번(순환) 77분후 도착
2011-04-09 10:42:07.434 GangwonBus[5461:207] ▷ 74번(순환)
2011-04-09 10:42:07.434 GangwonBus[5461:207] ▷ 81-1번(순환)
2011-04-09 10:42:07.435 GangwonBus[5461:207] ▷ 82번(순환)
2011-04-09 10:42:07.435 GangwonBus[5461:207] ▷ 83번(순환)
2011-04-09 10:42:07.436 GangwonBus[5461:207] ▷ 84번(순환)
2011-04-09 10:42:07.437 GangwonBus[5461:207] ▷ 90번(순환)
2011-04-09 10:42:07.437 GangwonBus[5461:207] ▷ 91번(순환) 108분후 도착

1 个答案:

答案 0 :(得分:0)

<font>标记是锚标记的子节点。描述[aTFHppleElement content]不正确described作为innerHTML,因为它只包含元素的文本内容,而不包含其子节点的内容。因此,您需要访问子节点才能显示该信息。实际上,存储库中的代码不提供访问子节点的必要API,但其中forks之一具有更改。

[aTFHppleElement children]提供对子节点数组的访问。它是TFHppleElement的数组。查看HTML结构,其中只有少数具有子节点,

for (int i=0;i<[busNumbs count];i++) {
    TFHppleElement *busNumb = [busNumbs objectAtIndex:i];
    NSString *out = [busNumb content];
    if ( [[busNumb children] count] != 0 ) {
        out = [out stringByAppendingFormat:@" %@", [[busNumb firstChild] content]];
    }
    NSLog(@"%@",out);
}