2011-12-24 8 views
2

私はウェブサイトの応答から得られるhtml文字列を持っています。私がそこでやっていることはすごくうまくいって、何の問題もありません。私が必要とするのは、hrefのhtml内の属性だけです。この属性に含まれるこのURLを取得するための最良の方法は何ですか。それが必要な場合は、私は外部ライブラリに公開しています。私は、最も効率的な方法を可能にしたいだけです。ありがとう。文字列iPhoneからのHTML属性の抽出

答えて

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

+0

私はそれを自分自身に試して、もっと詳しく説明します。 – Dimme

+0

あなたの素晴らしい。ありがとうございました! – Eli

-1

あなたは、htmlタグのURLを抽出するためのNSRegularExpresionを使用することができます。

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

+0

答えを見てみると、HTMLを解析していないので、関数懸念、それはちょうどramdomの文字列からのURLに一致しています... – Ecarrion

+0

私は何を言っています。類似したURLを含む文書の本文のテキストが一致します。タグからのテキストと同様に、OPは興味がありません。正規表現を使用してこれらのすべての可能性と戦い続けようとすると、非常に複雑でメンテナンスが難しいだけでなくあなたがしたいことが正規表現ではできない位置にいるかもしれません。 – Steve

関連する問題