3

iPhone SDKでHTMLページのコンテンツを解析する方法がわかりませんか?

私はiPhoneアプリを持っていますが、このアプリではHTMLページの画像とデータを表示する必要があります。HTMLページのURLがあります。HTMLページのURLからデータを取得する必要があります。HTMLページからHTMLコンテンツを解析してiPhoneアプリに表示するように案内してもらえますか?

手伝ってくれませんか?

編集

このhttp://www.example.com/mobile/403.htmlページのようなHTML形式のWebサイトがあります。このウェブサイト用のネイティブiPhoneアプリを開発したいと思います。クライアントがXMLフィードで応答しないため、このサイトを使用してHTMLコンテンツを解析する必要があります。このページには多くの画像、ライブデータ、テーブルがあります。これまで、iPhoneSDKでHTMLページ/コンテンツを解析していませんでした。だから私はこれを行うためにあなたの助けが必要ですか?手伝ってくれませんか?古い質問と比較して明確であることを願っています。前もって感謝します。

4

3 に答える 3

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;
    }
于 2012-06-01T12:04:34.010 に答える
0

私はまだあなたが何を望んでいるのか正確には理解していませんが、これは URL と HTML ページで可能なことです:

1) ページを Safari にロードできます。もちろん、ユーザーがURLを持っている場合、ユーザーはこれを行うことができます。ただし、ネイティブ アプリで Safari を起動し、読み込むページの URL を Safari に提供することもできます。ただし、ネイティブ アプリは Safari を起動して、ロードする実際の html ページを提供することはできません。URL が必要です。

2) ネイティブ アプリは UIWebView を使用して、a) URL が指定された html ページをダウンロードして表示するか、b) デバイスに html が存在する場合、html ページが UIWebView に渡され、UIWebView がそれを直接表示します。

3) html からテキストまたは画像を 1 つか 2 つ抽出して表示するだけの場合は、いくつかの投稿/チュートリアルを検索してから、a) 非表示の UIWebView に html ページをロードし、Javascript を使用することができます。 dom 要素にアクセスするには、または b) その xhmlt が xml パーサーを使用して探している html タグを抽出する場合、または c) html で使用できる html 解析フレームワークがあるかどうかを確認する、または d) html トークンのハックと文字列検索を行うhtmlで直接。

4) 完全な HTML を解析し、そのすべてのコンテンツを自分で表示します。これが非常に単純な html で、機能の完全なセットがなく、javascript などを処理できない場合を除きます。大規模なチームがあり、実質的に自分のブラウザーになるものを書くための年数がありますか。

編集:解析は表示と同じであるかのように、解析について話し続けています。

URL で http ページを表示するだけの場合は、UIWebView を使用します。UIWebView はそれを解析して表示します。自分で解析する必要はありません。または、アプリから Safari を起動します (ただし、後でアプリに戻ることはできません)。

UIWebViewが使えないって?なぜだめですか?

HTML ページを自分で実際に解析して表示しようとすると、気が狂ってしまいます。

于 2012-06-01T14:13:29.067 に答える
0

ネットワーキング フレームワーク ( AFNetworking など)のおかげで HTML を取得し、次のいずれかのオプションで解析する必要があります。

  1. カスタムコード
  2. いくつかの HTML 解析フレームワーク (私は何も知りません)
  3. 非表示のUIWebViewにHTMLをロードし、内部でJavascriptを実行しますstringByEvaluatingJavaScriptFromString:
于 2012-06-01T12:00:20.500 に答える