Ios 从网页获取图像URL

Ios 从网页获取图像URL,ios,objective-c,nsurl,Ios,Objective C,Nsurl,我正试图从这个网站上获取图像,但我有一个困难的时候。我所需要的只是图像的URL,当我打印URL时,我会得到回复。这是URL,我试图得到中间的主图像, 我一直在尝试下面的代码,但运气不好 NSURL *URL = [NSURL URLWithString:_urlTextField.text]; NSURLSession *session = [NSURLSession sharedSession]; [[session dataTaskWithURL:URL completionHandler

我正试图从这个网站上获取图像,但我有一个困难的时候。我所需要的只是图像的URL,当我打印URL时,我会得到回复。这是URL,我试图得到中间的主图像,

我一直在尝试下面的代码,但运气不好

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];

有人能帮忙吗?

我认为您需要做的第一件事是提供图像资源的实际url

比如,

这是我从那个网页的页面源中得到的

然后再提这个问题,


我认为您需要做的第一件事是提供图像资源的实际url

比如,

这是我从那个网页的页面源中得到的

然后再提这个问题,


我认为您需要做的第一件事是提供图像资源的实际url

比如,

这是我从那个网页的页面源中得到的

然后再提这个问题,


我认为您需要做的第一件事是提供图像资源的实际url

比如,

这是我从那个网页的页面源中得到的

然后再提这个问题,


您可以使用正则表达式首先 以正则表达式开头:
@“twitter:image\\\s+content=\\”

然后
使用正则表达式提取URL:
@“[^>]+”

您可以在ICU用户指南中找到正则表达式语法的信息:

示例代码:

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];
输出:

URL:“


当然,生产代码必须处理本示例代码没有处理的所有错误。

您可以首先使用正则表达式 以正则表达式开头:
@“twitter:image\\\s+content=\\”

然后
使用正则表达式提取URL:
@“[^>]+”

您可以在ICU用户指南中找到正则表达式语法的信息:

示例代码:

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];
输出:

URL:“


当然,生产代码必须处理本示例代码没有处理的所有错误。

您可以首先使用正则表达式 以正则表达式开头:
@“twitter:image\\\s+content=\\”

然后
使用正则表达式提取URL:
@“[^>]+”

您可以在ICU用户指南中找到正则表达式语法的信息:

示例代码:

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];
输出:

URL:“


当然,生产代码必须处理本示例代码没有处理的所有错误。

您可以首先使用正则表达式 以正则表达式开头:
@“twitter:image\\\s+content=\\”

然后
使用正则表达式提取URL:
@“[^>]+”

您可以在ICU用户指南中找到正则表达式语法的信息:

示例代码:

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];
输出:

URL:“


当然,生产代码必须处理此示例代码没有处理的所有错误。

我正在尝试使用上述方法查找URL,然后我将从图像的URL创建一个
UIImage
。我正在尝试使用上述方法查找URL,然后,我将从图像的URL创建一个
UIImage
。我尝试使用上述方法查找URL,然后我将从图像的URL创建一个
UIImage
。我尝试使用上述方法查找URL,然后,我将从图像的URL创建一个
UIImage
。您是否检查了响应块中的error值?问题实际上是关于解析HTML,只是顺便说一下,您正在其中查找图像标记。也许图书馆没有像广告宣传的那样工作?您可以尝试将NSData转换为字符串(ala),然后将字符串提供给
documentWithString:
构造函数。它可能会更好,因为它在文档中被引用(作者可能已经测试过了)。您是否检查了响应块中的错误值?问题实际上是关于解析HTML,只是顺便说一下,您正在查找其中的图像标记。也许图书馆没有像广告宣传的那样工作?您可以尝试将NSData转换为字符串(ala),然后将字符串提供给
documentWithString:
构造函数。它可能会更好,因为它在文档中被引用(作者可能已经测试过了)。您是否检查了响应块中的错误值?问题实际上是关于解析HTML,只是顺便说一下,您正在查找其中的图像标记。也许图书馆没有像广告宣传的那样工作?您可以尝试将NSData转换为字符串(ala),然后将字符串提供给
documentWithString:
构造函数。它可能会更好,因为它在文档中被引用(作者可能已经测试过了)。您是否检查了响应块中的错误值?问题实际上是关于解析HTML,只是顺便说一下,您正在查找其中的图像标记。也许图书馆没有像广告宣传的那样工作?您可以尝试将NSData转换为字符串(ala),然后将字符串提供给
documentWithString:
构造函数。由于它在文档中被引用(作者可能已经对它进行了测试),所以它可能工作得更好。所以,请你有什么新的解决方案吗?这段代码很好,但不适用于所有的web URL。所以,请你有什么新的解决方案吗?这段代码很好,但不适用于所有的web URL。所以,请你有什么新的解决方案吗?这段代码很好,但不适用于所有的web URL。那么,你有什么新的解决方案吗?