Получение второго абзаца в html - iOS

Я делаю приложение, которое будет получать текст с веб-сайта. У меня пока есть этот код.

- (void)viewDidLoad {
    [super viewDidLoad];

    NSURL *URL = [NSURL URLWithString:@"http://rss.cnn.com"];
    NSData *data = [NSData dataWithContentsOfURL:URL];

    // Assuming data is in UTF8.
    NSString *string = [NSString stringWithUTF8String:[data bytes]];
    show.text = string;


    NSString *webString = show.text;
    NSScanner *stringScanner = [NSScanner scannerWithString:webString];
    NSString *content = [[NSString alloc] init];
    while ([stringScanner isAtEnd] == NO) {
        [stringScanner scanUpToString:@"<p>" intoString:Nil];
        [stringScanner scanUpToString:@"</p>" intoString:&content];


        show.text = content;
    }


}

Как вы можете видеть, я пытаюсь захватить абзац, и это сработало, он извлекает первый абзац с веб-сайта, когда я вижу весь html-код, я вижу, что есть более одного <p> / абзаца, как будто он имеет <p> (some text) </p> (Some other code) <p> (some text) </p>

Мое приложение захватывает только первый абзац. Как мне сделать так, чтобы приложение могло захватывать и второй абзац? Благодарю вас!


person Ajay Venkat    schedule 17.12.2014    source источник
comment
Итак, что вы хотите, вы хотите удалить ‹p› из вашей строки?   -  person sanjeet    schedule 17.12.2014
comment
Нет, я хочу иметь возможность извлечь второй абзац из html. Потому что я могу получить только первый абзац с кодом, который я использовал.   -  person Ajay Venkat    schedule 17.12.2014
comment
Я запустил ваш код, и проблема в том, что html не содержит <p>, а только <p   -  person Lyndsey Scott    schedule 17.12.2014
comment
Не могли бы вы написать ответ, как это исправить? Спасибо.   -  person Ajay Venkat    schedule 17.12.2014


Ответы (1)


Это можно сделать с помощью регулярных выражений. Используйте следующий код,

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\<p>(.*?)\\</p>" options:NSRegularExpressionCaseInsensitive error:NULL];

NSString *webString = show.text;

NSArray *myArray = [regex matchesInString:webString options:0 range:NSMakeRange(0, [webString length])] ;

NSMutableArray *matches = [NSMutableArray arrayWithCapacity:[myArray count]];

for (NSTextCheckingResult *match in myArray) {
    NSRange matchRange = [match rangeAtIndex:1];
    [matches addObject:[webString substringWithRange:matchRange]];

    NSLog(@"%@", [matches lastObject]);
}
person Ashish P.    schedule 17.12.2014
comment
Извините, это не сработало. Я не получил второй абзац в коде. - person Ajay Venkat; 17.12.2014
comment
Показать все содержимое вашей webString. Я проверю на своей машине. - person Ashish P.; 17.12.2014
comment
Спасибо за помощь, но я хочу получить только второй абзац из html-кода. :) - person Ajay Venkat; 17.12.2014