【发布时间】:2019-04-08 08:43:26
【问题描述】:
这可能有点令人困惑,因为我对 Objective-C 有点新。我的应用程序已经获得源代码:
NSURL *URL = [NSURL URLWithString:@"google.com"];
NSString *webData= [NSString stringWithContentsOfURL:URL encoding:NSASCIIStringEncoding error:nil];
正确获取源代码,我已经记录并检查了它。我只想找到该字符串中的链接,所以任何带有关键字的内容:
<a href
我尝试过搜索字符串,如下所示:
if ([webData containsString:@"<a href="]) {
NSLog(@"string contains!");
} else {
NSLog(@"string does not contain");
}
它总是返回负数,我不明白为什么。我只想获取包含链接的代码行并将这些行设置为新字符串。该字符串将包含源上的所有链接,但我不知道该怎么做。我希望我已经提供了足够的信息,如果您对我的问题有任何疑问,请提出。谢谢。
编辑 1 我已经尝试了给出的答案,这是我的以下代码
NSURL *URL = [NSURL URLWithString:@"google.com"];
NSString *webData= [NSString stringWithContentsOfURL:URL encoding:NSASCIIStringEncoding error:nil];
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\<a href=\"(.*)\".*<\/a\>"
options:NSRegularExpressionCaseInsensitive
error:&error];
NSUInteger numberOfMatches = [regex matchesInString:webData
options:0
range:NSMakeRange(0, [webData length])];
它首先不起作用,我收到以下错误/警告:warnings
编辑 2 我已经尝试修复代码,我的当前是
NSURL *URL = [NSURL URLWithString:@"google.com"];
NSString *webData= [NSString stringWithContentsOfURL:URL encoding:NSASCIIStringEncoding error:nil];
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\<a.+?\\>.+?\\<\\/a\\>"
options:NSRegularExpressionCaseInsensitive
error:&error];
NSArray *matches = [regex matchesInString:webData
options:0
range:NSMakeRange(0, [webData length])];
NSLog(@"%@", matches);
这是正在输出的日志:
2018-11-05 00:12:51.144009-0500 InjectionTest[42684:6739102] (
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2c00>{25654, 124}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2cc0>{38864, 316}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2340>{39939, 105}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2100>{40051, 103}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2000>{40203, 125}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2140>{41190, 91}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b0f00>{41297, 67}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2d80>{41479, 124}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}"
)
我很确定这不是我应该得到的。
【问题讨论】:
标签: objective-c xcode web-scraping html-parsing