【问题标题】:How to parse HTML page data in iphone app?如何在 iPhone 应用程序中解析 HTML 页面数据?
【发布时间】:2012-06-06 15:54:57
【问题描述】:

我不知道如何在 iPhone SDK 中解析 HTML 页面内容?

我有一个 iPhone 应用程序,在这个应用程序中我需要显示 HTML 页面中的图像和数据。我有一个 HTML 页面 URL,我需要从 HTML 页面 URL 获取数据。谁能指导我从 HTML 页面解析 HTML 内容并在 iPhone 应用程序中显示?

你能帮帮我吗?

编辑

我有一个 HTML 格式的网站,例如 http://www.example.com/mobile/403.html 页面。我想为这个网站开发一个原生 iPhone 应用程序。我的客户不会在 XML 提要中给出响应,所以我需要使用这个站点并解析 HTML 内容。此页面有许多图像、实时数据和表格。到目前为止,我还没有在 iPhone SDK 中解析 HTML 页面/内容。所以我需要你的帮助才能做到这一点?你能帮我么?我希望与旧问题相比很清楚。提前致谢。

【问题讨论】:

  • 直接在webview中加载该url
  • @Narayana 我无法在 UIWebview 中加载它。我需要从 HTML 页面解析数据并使用 iOS 方式加载。你能帮帮我吗?
  • 您是否尝试过先搜索 StackOverflow? stackoverflow.com/questions/405749/parsing-html-on-the-iphone
  • 您是否有一个服务器,您可以将 Web 服务部署到该服务器上,您可以将 HTML 页面抓取成您需要的内容,并通过 JSON、XML 等方式将这些数据提供给 iPhone?跨度>
  • 谢谢麦克拉格先生。我没有服务器将 HTML 页面刮成 XML/JSon 格式。我的客户在 HTML 中提供了一个链接,我需要以 iOS 方式为 iPhone 应用程序解析和加载。提前致谢。

标签: iphone html objective-c ios html-parsing


【解决方案1】:

我仍然不明白你想要什么,但这是 urls 和 html 页面的可能:

1) 页面可以加载到 Safari 中。当然,如果用户有 url,用户可以这样做。但本机应用程序也可以启动 Safari 并为 Safari 提供要加载的页面的 url。然而,原生应用程序无法启动 Safari 并为其提供要加载的实际 html 页面,它必须是 url。

2) 原生应用可以使用 UIWebView a) 下载并显示给定 url 的 html 页面,或者:b) 如果设备上存在 html,则将 html 页面提供给 UIWebView,然后 UIWebView 将显示它直接。

3) 如果打算只是从 html 中提取一些文本或一两个图像然后显示它,然后搜索一些帖子/教程然后你可以 a) 在隐藏的 UIWebView 中加载 html 页面并使用 Javascript 访问 dom 元素或 b) 如果其 xhmlt 使用 xml 解析器来提取您正在查找的 html 标签或 c) 查看是否有可用于 html 的 html 解析框架或 d) 进行 hack 和字符串搜索html 中的 html 标记直接。

4) 自己解析完整的 HTML 并显示其所有内容。除非这是一个非常简单的 html,没有完整的功能集并且无法处理 javascript 等。你是否有一个庞大的团队和多年的空闲时间来编写你自己的浏览器。

编辑: 您仍然在谈论解析,就好像解析与显示它一样。

如果您只想在 url 上显示 http 页面,请使用 UIWebView。 UIWebView 将解析它并显示它。无需您自己解析。或者从您的应用启动 Safari(但之后您将无法返回您的应用)。

你说你不能使用 UIWebView?为什么不?

亲自尝试解析和显示 HTML 页面将是疯狂的。

【讨论】:

  • 是的,马丁先生。你是对的,但我的客户有一个移动网站,所以他不想在 uiwebview 中加载页面,他想解析数据并使用 iOS 开发工具包加载它。那就是我要求解析 HTML 数据。我希望很清楚。我英语不好。对不起我糟糕的英语。提前致谢。
  • 很抱歉,我不知道任何现有的 html 解析器。 XHMTL 可以使用任何 XML 解析器进行解析,但我对 HTML 的了解还不够,但不知道是否也可以轻松地应用 XML 解析器。是只针对 HIS 网页进行此操作,还是可以针对任何其他页面?
  • 谢谢马丁先生。我已经问过客户了。但他想要这样。我不知道该怎么做。感谢您的努力。
【解决方案2】:

您可以将图像 url 添加到 NSMutableArray 中,如下面的代码..

     NSMutableArray *array = [[NSMutableArray alloc] init];
     NSString *response = [[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"index1" ofType:@"html"] encoding:NSUTF8StringEncoding error:nil];
  //  NSLog(@"response == %@", response);
   NSString *regexStr = @"<a href=\"([^>]*)\">";
  //NSString *regexStr = @"<A HREF=\"([^>]*)\">";
    NSError *error;
    NSInteger i =0;
 // NSInteger length =0;
    while (i<[response length]) {
           NSRegularExpression *testRegex = [NSRegularExpression regularExpressionWithPattern:regexStr options:NSRegularExpressionCaseInsensitive error:&error];
        if( testRegex == nil ) NSLog( @"Error making regex: %@", error );
            NSTextCheckingResult *result = [testRegex firstMatchInString:response options:0 range:NSMakeRange(i, [response length]-i)];
 //   NSLog(@"result == %@",result);
            NSRange range = [result rangeAtIndex:1];
            if (range.location == 0) {
            break;
        }
        NSString * imageUrl = [response substringWithRange:range];
        if ([imageUrl hasSuffix:@".jpg"] || [imageUrl hasSuffix:@".gif"] || [imageUrl hasSuffix:@".tiff"] || [imageUrl hasSuffix:@".JPG"] || [imageUrl hasSuffix:@".JPEG"] || [imageUrl hasSuffix:@".png"] || [imageUrl hasSuffix:@".PNG"] || [imageUrl hasSuffix:@".GIF"] || [imageUrl hasSuffix:@".TIFF"]) {
       // NSLog(@"%@",imageUrl);
       // imageUrl = [imageUrl stringByReplacingOccurrencesOfString:@"/syneye_Portfolio/" withString:@""];
            [array addObject:imageUrl];
            //[array retain];
        }
        i= range.location;
        //NSLog(@"%i",range.location);
        i=i+range.length;
    }

【讨论】:

  • 谢谢 Shorhashi。我可以在此代码中使用 HTML 页面 URL 吗?就像example.com/mobile/403.html 我如何解析这个链接并获取内容?我会试试你的代码。你能帮我么?提前致谢。
  • 抱歉,Gopinath 延迟重播...是的,您也可以在此代码中使用 HTML 页面 URL..如 NSURL * url = [NSURL URLWithString:@"iana.org/domains/example/"]; NSData * data = [ [NSData alloc] initWithContentsOfURL:url]; NSString * response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 然后按照我上面指定的代码使用响应字符串..
  • 谢谢 Shorhashi。我会尝试你的代码并让你知道结果。感谢您的帮助。
【解决方案3】:

您应该通过网络框架 (AFNetworking for instance) 获得 HTML,并使用以下选项之一对其进行解析:

  1. 自定义代码
  2. 一些 HTML 解析框架(我不知道)
  3. 在隐藏的 UIWebView 中加载 HTML 并在内部使用 stringByEvaluatingJavaScriptFromString: 执行一些 Javascript

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    相关资源
    最近更新 更多