如何解析网站文本并在视图中显示

时间:2012-03-03 06:00:40

标签: ios xcode view xml-parsing

我想加载一个网页并仅解析文章文本和标题,然后在视图中显示。是否可以在不使用UIWebVIew的情况下执行此操作?如果可能的话,我宁愿只使用内置函数而不使用插件。 谢谢。

2 个答案:

答案 0 :(得分:5)

您可以创建HTTP请求以获取html内容字符串,然后解析字符串。 例如,要获取html的标题:

NSError *error = nil;
NSString *html = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"] encoding:NSASCIIStringEncoding error:&error];
if(html) {
    NSLog(@"HTML %@", html);

    NSRange r = [html rangeOfString:@"<title>"];
    if (r.location != NSNotFound) {
        NSRange r1 = [html rangeOfString:@"</title>"];
        if (r1.location != NSNotFound) {
            if (r1.location > r.location) {
                NSString *title = [html substringWithRange:NSMakeRange(NSMaxRange(r), r1.location - NSMaxRange(r))];
                NSLog(@"title %@", title);
            }
        }
    }
} else {
    NSLog(@"Error %@", error);
}

答案 1 :(得分:3)

如果您需要解析网页,并获得与“文章”及其标题相关的内容,而没有其他所有内容,则需要Diffbot之类的内容来检索文章标题,作者,文字,和内容相关的图像。 Diffbot是为每月进行超过10,000个API调用的应用程序支付的(这并不多)。诸如Readability,Pocket(以前称为Read It Later)和Instapaper之类的应用程序具有公共API,这些应用程序允许用户保存已分析的文章以供以后在多个设备上阅读。但Pocket不允许其API仅用于解析;可读性据称可根据请求提供对其解析器(“Content API”)的访问(我没有提出该请求,但我将来可能需要);和Instapaper一样,与其他两个不同,我从未用过它作为一个应用程序,并没有真正说清楚它是否允许这种用途。

我希望我的回答虽然已经很晚几个月了但仍然有用;请简要回复您找到的解决方案(如果有)。

P.S。:显然,作为新用户,我只能给你两个链接;我已经删除了所有后续的,但前两个是最有用的。