0

HTMLページからhref値を取得しようとしています

NSURL *url = [[searchBar.text stringByReplacingOccurrencesofString:@" " withString:@"+"]];
NSString *html = [NSString stringWithContentOfURL:url encoding:NSASCIIStringEncoding error:&error
NSLog(@"Html = %@",html);

これまでのところ、コードのこの時点までは、YouTubeからHTMLを取得し、検索結果の最初のページのHTMLを表示するという点で、完全に機能しています。

次にやろうとしたのは、、、、などの不要なHTMLタグの一部を削除することです。残したいのは、タグとその値またはデータだけです。

そこで、NSScannerとRegexを使ってみましたが、期待した結果が得られないようです。私が今試しているコードは

NSScanner *scanner = [NSScanner scannerWithString:self];
[scanner setCharactersToBeSkipped:nil];
NSMutableSet *tags = [[NSMutableSet alloc] init];
NSString *tag;
do {    
tag = nil;      
      [scanner scanUpToString:@"<" intoString:NULL];        
      [scanner scanUpToString:@">" intoString:&tag];        

      if (tag) {            
                 NSString *t = [[NSString alloc] initWithFormat:@"%@>", tag];   
    [tags addObject:t];     

               }    
   } while (![scanner isAtEnd]);    

NSMutableString *result = [[NSMutableString alloc] initWithString:self];
NSString *finalString;  
NSString *replacement;  
 for (NSString *t in tags) {        
               replacement = @" ";      
                      if ([t isEqualToString:@"<a>"] ||
        [t isEqualToString:@"</a>"] ||  
              [t isEqualToString:@"<span>"] ||
        [t isEqualToString:@"</span>"] ||
        [t isEqualToString:@"<strong>"] ||
        [t isEqualToString:@"</strong>"] ||
        [t isEqualToString:@"<em>"] ||  
              [t isEqualToString:@"</em>"]||
                          [t isEqualToString:@"<script>"]||
                          [t isEqualToString:@"</script>"])

                          { 
                              replacement = @"";    
                    }
[result replaceOccurrencesOfString:t withString:replacement options:NSLiteralSearch MakeRange(0, result.length)];   


     }


finalString = [result stringByRemovingNewLinesAndWhitespace];

フォーマットされたHTMLテキスト文字列をNSStringパーツに変換します 。これは私が参照した場所です。しかし、それでも私はそれを必要な方法で動作させることができません。私は同じ問題で何日も立ち往生しています、私を助けてください。私がそれをどのように行うべきかについてのアドバイスも大いに役立ちます。ありがとう前進。

4

1 に答える 1

0

あなたの最善の策は、リンクされた投稿からNSString+HTMLカテゴリを変更することです。たとえば、タグを削除したくない<a>場合は、コードを次のように変更できます。

上記のリンク先のファイルの 67 行目にこれを挿入します。

if ([t isEqualToString:@"<a>"] || [t isEqualToString:@"</a>"]) continue;

<a>そして、その行に続く if から条件を削除します。

必要なものが得られるまで、そのコードを自由に読んで、分析して、遊んでください。オープンソースの世界で最も優れているのは、既に書かれたコードから知らないことをすべて学ぶことができるということです。

于 2012-07-16T07:08:09.733 に答える