gpt4 book ai didi

IOS 如何使用 nsscanner 类查找完整的 rss 提要链接

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:47 24 4
gpt4 key购买 nike

我正在从基于 RSS 提要的项目中获取数据。通过谷歌搜索,我发现通常在 HTML 源代码中可以找到这种格式的 RSS 链接。

<link rel="alternate" type="application/rss+xml" title="RSS Feed" href="http://feeds.abcnews.com/abcnews/topstories" />

因此,我必须使用 nsscanner 类从 HTML 源中查找 RSS 提要的链接。但我不知道正确的模式,我必须设置 scanUpToString:haracterSetWithCharactersInString: 或等等。所以,请帮助我如何找到 RSS 提要的完整链接。

这是我的尝试:

- (void)viewDidLoad {
NSString *googleString = @"http://abcnews.go.com/";
NSURL *googleURL = [NSURL URLWithString:googleString];
NSError *error;
NSString *googlePage = [NSString stringWithContentsOfURL:googleURL encoding:NSASCIIStringEncoding
error:&error];

NSLog(@"%@",[self yourStringArrayWithHTMLSourceString:googlePage]);//will return NSMutableArray
}

-(NSMutableArray *)yourStringArrayWithHTMLSourceString:(NSString *)html
{
NSString *from = @"<a href=\"";
NSString *to = @"</a>";
NSMutableArray *array = [[NSMutableArray alloc]init];

NSScanner* scanner = [NSScanner scannerWithString:html];

[scanner scanUpToString:@"<link" intoString:nil];
if (![scanner isAtEnd]) {
NSString *url = nil;

[scanner scanUpToString:@"RSS Feed" intoString:nil];
NSCharacterSet *charset = [NSCharacterSet characterSetWithCharactersInString:@"/>"];
[scanner scanUpToCharactersFromSet:charset intoString:nil];
[scanner scanCharactersFromSet:charset intoString:nil];
[scanner scanUpToCharactersFromSet:charset intoString:&url];
NSLog(@"%@",url);
// "url" now contains the URL of the img
}

return array;
}

目前我只能找到这段代码的链接。

输出:

image of url

但完整链接是:-

http://feeds.abcnews.com/abcnews/topstories

最佳答案

那是因为

[NSCharacterSet characterSetWithCharactersInString:@"/>"];

包含字符“/”是http://的最后一个字符以及 feeds.abcnews.com 之后的字符。

编辑:这是一个展示您可以采用的方法的 Playground 。(未经过全面测试)

它在 Swift 中,但 API 在 Obj-C 中是相同的。

var str = "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS Feed\" href=\"http://feeds.abcnews.com/abcnews/topstories\" />";

var scanner = NSScanner.init(string: str);
var result: NSString? = nil

scanner.scanUpToString("href=\"", intoString: nil);
scanner.scanString("href=\"", intoString: nil);
scanner.scanUpToString("\" />", intoString: &result);

关于IOS 如何使用 nsscanner 类查找完整的 rss 提要链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33007842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com