我正在尝试使用nsparser从网页中提取数据

时间:2012-07-26 20:16:49

标签: objective-c nsstring uitextview

    -(NSMutableArray *)titlesFromString:(NSString *) pageData
{
    NSMutableArray *foundTitles=[[NSMutableArray alloc] init];
 NSScanner *scaningPage = [NSScanner scannerWithString:pageData];

    NSString *title;
    for (int i =0;i<4;i++) {
    [scaningPage scanUpToString:@"class='topic_title" intoString:NULL];
    [scaningPage scanUpToString:@">" intoString:NULL];
    scaningPage.scanLocation++;
    [scaningPage scanUpToString:@"</a></h4>" intoString:&title];
    [foundTitles addObject:title];
    }


   status.text = [[NSNumber numberWithInt:[foundTitles count]] stringValue];
    for (NSString *titlesLife in foundTitles){
        [results.text stringByAppendingString:@"\n"];
        [results.text stringByAppendingString:titlesLife];
    }
   return(nil);

}

现在我回到零直到让它工作。 我从connectionDidFinishLoading调用此方法。

在文档中他们使用while循环 while([theScanner isAtEnd] == NO){} 但他们也在常规数据集上执行此操作,其中扫描的最后一件事是在字符串的末尾,所以我猜这就是为什么我遇到了边界问题。 我也看过RegexKit框架,它可能比解析器更好。 直到我得到while循环弄明白我有一个for循环只是得到一些信息。 我想我需要检查是否存在另一个元素,如果没有,则扫描以便不让扫描仪超出范围。

我也很困惑为什么我需要在扫描'&gt;'后增加扫描仪位置进入null其他方面我最终得到的字符串如“&gt;现在的歌是什么?” 当我认为使用initWithContentsOfUrl可能更简单时,我也使用NSURLConnection获取数据,但获得连接路径的经验很好。

第二个块是我试图将我的结果添加到结果UITextView,这似乎不起作用。我应该不应该setNeedsDisplay?我认为这只是在代码中绘制视图时。 感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

第2部分:

您将额外的文字添加到标签的文本中,然后将其丢弃:)

尝试这样的事情:

results.text = [results.text stringByAppendingString:@"\n"];

第1部分非常棘手。

处理HTML是一个众所周知的棘手问题:(但是,对你的问题有一个很好的答案here on stack overflow。我从来没有使用过这个库,但是+61票可能是一个很好的标志:)