我正试图从这个网站获取图片,但我很难过。我需要的只是图像的URL,当我打印我注意到的URL时。这是URL,我试图让中间的主图像http://theoldrussuanbum.vsco.co/media/555722fde555153e3e8b4591
我一直在尝试以下代码而没有运气。
NSURL *URL = [NSURL URLWithString:_urlTextField.text];
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:URL completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
NSString *contentType = nil;
if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
NSDictionary *headers = [(NSHTTPURLResponse *)response allHeaderFields];
contentType = headers[@"Content-Type"];
}
HTMLDocument *document = [HTMLDocument documentWithData:data
contentTypeHeader:contentType];
HTMLElement *element = [document firstNodeMatchingSelector:@"img"];
NSString *urlString = element.attributes[@"src"];
NSLog(@"URL: %@", urlString);
}] resume];
有人可以帮忙吗?
答案 0 :(得分:3)
您可以先使用正则表达式
找到正则表达式的开头:@"twitter:image\"\\s+content=\""
然后
使用正则表达式提取URL:@"[^>]+"
您可以在ICU用户指南中找到正则表达式语法的信息:Regular Expressions。
示例代码:
NSString *urlString = @"http://theoldrussuanbum.vsco.co/media/555722fde555153e3e8b4591";
NSURL *URL = [NSURL URLWithString:urlString];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *sessionTask;
sessionTask = [session dataTaskWithURL:URL completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSRange preambleRange = [html rangeOfString:@"twitter:image\"\\s+content=\"" options:NSRegularExpressionSearch];
if (preambleRange.location != NSNotFound) {
NSString *htmlOffset = [html substringFromIndex:preambleRange.location + preambleRange.length];
NSRange imgUrlRange = [htmlOffset rangeOfString:@"[^>]+" options:NSRegularExpressionSearch];
if (imgUrlRange.location != NSNotFound) {
NSString *imgURLString = [htmlOffset substringWithRange:imgUrlRange];
NSLog(@"URL: %@", imgURLString);
}
}
}];
[sessionTask resume];
输出:
网址:http://image.vsco.co/1/548c6a64020e11517164/555722fde555153e3e8b4591/600x800/vsco_051615.jpg"
当然,生产代码必须处理此示例代码所没有的所有错误。
答案 1 :(得分:0)
我认为您需要做的第一件事就是提供图像资源的实际网址。
例如; http://image.vsco.co/1/548c6a64020e11517164/548c7b532b5615b6658b4567/vsco_121314.jpg
这是我从该网页的页面来源获得的
然后只是提出这个问题;