2011-12-24 40 views
2

我有一个html字符串,我从网站的响应中获得。我在那里做的所有事情都很棒,我没有任何困难。我需要去的仅仅是在之内的href属性。获取该属性中包含的此URL的最佳方法是什么?如果有必要,我可以向任何外部图书馆开放,我只想要最有效的方式。谢谢。从字符串中提取HTML属性iPhone

回答

4

使用此API来解析HTML代码并选取所需的元素。

ElementParser是一个轻量级框架,可以轻松访问xml和html内容。它不会迷失在HTML和XML规范的复杂性中,而是希望不会掩盖其基本的简单性。它没有做任何事情,它渴望做到“足够”。

来源:http://touchtank.wordpress.com/element-parser/


下面是如何用自己的例子使用ElementParser一个例子。我希望这是有帮助的。

圣诞快乐!嗬 - 嗬 - 嗬

// Here you create the parser, don't forget to #import "Element.h" and #import "ElementParser.h" 
ElementParser * parser = [[ElementParser alloc] init]; 

// This is the HTML source code that you want to parse 
DocumentRoot* document = [parser parseHTML:@"<html><a href=\"http://google.com\">Google Link</a></html>"]; 

// Create an array where you will put all the <a></a> elements 
NSArray* elements = [document selectElements: @"a"]; 

// Iterate though the array, for each element pick the "href" attribute 
NSMutableArray* results = [NSMutableArray array]; 
for (Element* element in elements){ 
    NSString* snipet = [element attribute:@"href"]; 

    // Add the result for each element to the "results" array 
    [results addObject: snipet]; 
} 

// Print the results on the screen 
NSLog(@"%@",[results componentsJoinedByString: @"\n"]); 
+0

我其实有一个框架在我的项目,现在!我无法找到如何使用它!没有关于它的文档,只是关于如何使用它的一小段文字。它没有详细描述。有人知道如何使用ElementParser吗?如果是这样,你能告诉我如何使用它来提取这个'href'属性。谢谢。 – Eli 2011-12-24 14:59:34

+0

我会给它尝试自己,并回来更多的细节。 – Dimme 2011-12-24 18:24:08

+0

你真棒。谢谢! – Eli 2011-12-24 18:25:12

-1

你可以使用NSRegularExpresion用于提取HTML代码的网址。

NSString *regexStr = @"http?://([-\\w\\.]+)+(:\\d+)?(/([\\w/_\\.]*(\\?\\S+)?)?)?"; 
NSString * url = @"<a href=\"http://www.stackoverflow.org/\">stackoverflow</a>"; 
NSError *error; 
NSRegularExpression *testRegex = [NSRegularExpression regularExpressionWithPattern:regexStr options:0 error:&error]; 
if(testRegex == nil) NSLog(@"Error making regex: %@", error); 
NSRange range = [testRegex rangeOfFirstMatchInString:url options:0 range:NSMakeRange(0, [url length])]; 

NSString * href = [url substringWithRange:range]; 

记住,NSRegularExpression需要iOS 4或5

+0

-1你不能用正则表达式解析HTML。 http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – Steve 2011-12-24 08:04:27

+0

如果你看看答案我不解析HTML,只要功能关注,它只是匹配一个ramdom字符串的url ... – Ecarrion 2011-12-24 14:12:17

+0

哪些支持什么我说。恰好包含相似URL的文档正文中的文本将匹配。正如来自标签的文本OP不感兴趣,等等等等。如果你继续尝试使用正则表达式来处理所有这些可能性,你会发现它不仅变得非常复杂而且难以维护,但是你也可能发现自己处于一个你想做的事情不能用正则表达式完成的位置。 – Steve 2011-12-24 15:48:05