首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在尝试使用nsparser从网页中提取数据

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

Stack Overflow用户
提问于 2012-07-27 04:16:49
回答 1查看 99关注 0票数 0
代码语言:javascript
复制
    -(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);

}

现在,我返回nil,直到它正常工作。我从connectionDidFinishLoading调用这个方法。

在文档中,他们使用while循环while (theScanner isAtEnd == NO){},但他们也在常规数据集上执行此操作,其中最后扫描的内容位于字符串的末尾,所以我猜这就是我遇到边界问题的原因。我也见过RegexKit框架,它可能比解析器工作得更好。在我弄清楚while循环之前,我只有一个for循环来获取一些信息。

我还搞不懂,为什么一旦把'>‘扫描成null,我就需要增加扫描器的位置,否则我最终会得到像">现在在唱什么歌?“这样的字符串。

第二个部分是我试图将我的结果添加到results UITextView中,但这似乎不起作用。我不应该必须setNeedsDisplay,对吗?我以为只有在代码中绘制视图时才会出现这种情况。谢谢你的建议。

EN

回答 1

Stack Overflow用户

发布于 2012-07-27 05:19:47

第2部分:

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

尝试如下所示:

代码语言:javascript
复制
results.text = [results.text stringByAppendingString:@"\n"];

第一部分要复杂得多。

处理超文本标记语言是出了名的棘手问题:(然而,对于您的问题here on stack overflow,有一个很好的解决方案。我从来没有使用过这个库,但+61票可能是一个相当好的迹象:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11677343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档