Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用xcode从html中检索某些属性_Iphone_Html_Xcode_Href - Fatal编程技术网

Iphone 使用xcode从html中检索某些属性

Iphone 使用xcode从html中检索某些属性,iphone,html,xcode,href,Iphone,Html,Xcode,Href,我正在尝试从html页面获取href值 NSURL *url = [[searchBar.text stringByReplacingOccurrencesofString:@" " withString:@"+"]]; NSString *html = [NSString stringWithContentOfURL:url encoding:NSASCIIStringEncoding error:&error NSLog(@"Html = %@",html); 到目前为止,就从yo

我正在尝试从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];
NSScanner*scanner=[NSScanner scannerWithString:self];
[扫描仪设置字符stobeskiped:nil];
NSMutableSet*标记=[[NSMutableSet alloc]init];
NSString*标签;
做{
标签=零;
[扫描仪扫描字符串:@“intoString:&tag];
如果(标记){
NSString*t=[[NSString alloc]initWithFormat:@“%@>”,标记];
[tags addObject:t];
}    
}而(![scanner isattend]);
NSMutableString*结果=[[NSMutableString alloc]initWithString:self];
NSString*最后一环;
NSString*替换;
对于(标记中的NSString*t){
替换=@;
如果([t isEqualToString:@]

这就是我引用的地方。但我仍然无法让它按我需要的方式工作。我已经为同一个问题困扰了很多天,请帮助我。任何关于我应该如何做的建议都会非常有帮助。提前感谢。

你最好的选择是从你的链接帖子中修改类别。例如,如果你不想移动
标记,您可以将代码修改为以下内容:

将其插入到上面链接的文件的第67行:

if ([t isEqualToString:@"<a>"] || [t isEqualToString:@"</a>"]) continue;
如果([t isEqualToString:@”“]|[t isEqualToString:@”“])继续;
并从该行后面的if中删除
条件


请随意阅读、分析和使用这些代码,直到你得到你需要的东西:在开源世界中,最棒的事情就是你可以从已经编写的代码中学习所有你不知道的东西。

你的链接文章中的NSString+HTML分类有什么问题吗?我使用它,而且效果很好。我只有一个纯文本ppears和href的值也被过滤掉了。我建议您根据需要修改NSString+HTML。这远不是复杂的代码,他们已经为您完成了大部分工作:您只需要一些微调(从解析的标记中删除标记)我应该编辑哪一部分?如果是这样的话?