【问题标题】:HTML Parsing on iPhoneiPhone 上的 HTML 解析
【发布时间】:2011-04-09 01:52:38
【问题描述】:

我想解析这个网站:

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);
}

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

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분후 도착

【问题讨论】:

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


    【解决方案1】:

    &lt;font&gt; 标签是锚标签的子节点。描述 [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);
    }
    

    【讨论】:

    • 它有警告...'TFHppleElement'可能不响应'-children'并且'TFHppleElement'可能不响应'-firstChild'。
    • 嗯.. 你使用的是来自 fork 的 header 吗?您看到的警告表明方法未在类接口中定义,如果未实现,这也会导致错误。
    猜你喜欢
    • 1970-01-01
    • 2011-09-17
    • 2011-02-21
    • 2010-09-29
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    相关资源
    最近更新 更多