我正在创建一个应用程序,它将从我到目前为止获得此代码的网站获取文本
- (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>
我的应用程序仅捕获第一段如何制作,以便应用程序也可以捕获第二段?谢谢!
答案 0 :(得分:0)
您可以使用正则表达式执行此操作。使用以下代码
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]);
}