2011-09-15 2 views
1

URL www.drugs.com/imprints.phpをスクラップするiPhoneアプリを書いています。 それは四つのパラメータ(名前、インプリント、色、形)のいずれかを取り、のように見えるURLパラメータにそれをプラグ:ここiOSのスクリーンスクラップを含むObjective-C&Cocoa Touchの問題

http://www.drugs.com/imprints.php?action=search&imprint=%@&color=%@&shape=%@&drugname=%@ 

は私がスクレイピングを行うために書いたコードのセグメントであります:

NSString *name = [[NSString alloc] initWithFormat:@"%@", [ask text]]; 
NSString *imprint = [[NSString alloc] initWithFormat:@"%@", [imp text]]; 
NSString *color = [[NSString alloc] initWithFormat:@"%@", [col text]]; 
NSString *shape = [[NSString alloc] initWithFormat:@"%@", [sha text]]; 

NSString *address = @"http://www.drugs.com/imprints.php?action=search&drugname="; 
NSString *request = [NSString stringWithFormat:@"http://www.drugs.com/imprints.php?action=search&imprint=%@&color=%@&shape=%@&drugname=%@",imprint,color,shape,name]; 

NSString *escapedUrl = [request 
         stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

NSURL *URL = [NSURL URLWithString:escapedUrl]; 

NSString *txtToScrape = [NSString stringWithContentsOfURL:URL encoding:NSASCIIStringEncoding error:&error]; 

    NSString *drugName= [[[[txtToScrape componentsSeparatedByString:@"q="] objectAtIndex:1] componentsSeparatedByString:@">"] objectAtIndex:0];  
    NSString *drugImage = [[[[txtToScrape componentsSeparatedByString:@"images/pills/mmx/"] objectAtIndex:1] componentsSeparatedByString:@");"] objectAtIndex:0]; 
    NSString *drugDesc = [[[[txtToScrape componentsSeparatedByString:@"/imprints/"] objectAtIndex:1] componentsSeparatedByString:@".html"] objectAtIndex:0]; 

基本的にコードは、薬剤情報をビューに戻して文字列にします。私はcomponentsSeparatedByStringを使用していて、コード内のさまざまな「キー」タグと単語を探していて、HTMLのアーティファクトに基づいてそれらを返す/解析しています。

今、私の質問は、これを行うには良い方法がありますか?私はiOSプログラミングを初めて学び、より効率的なものを見落としているように感じます。また、AppStoreでこれを配布する場合は、サードパーティのWebサイトを掻き集めているので正当だろうか?私はそれを販売する計画はありませんが、無料でそれを与える。最後に、UIにexitボタンがありますが、iOS Appsでexitボタンを使用するのはどうですか?それのためにAppleは赤旗を立てるだろうか? (終了ボタンは終了します(0);)。

申し訳ありませんが、私はココアとiOSの開発を初めて行っています。

答えて

5

をあなたはwww.drugs.comのためのTOSをチェックしますそれはまだ合法的な灰色の領域だと言われていますが、80legsのような企業は、許可されていない複製を禁止し、結果を販売するウェブサイトをクロールすることによって利益を得ています。念のために、擦り傷による法的問題に直面することはほとんどありません。

私はApp Storeで見た他のアプリに基づいて、Appleには気付かずに気をつけているとは思えません。

+0

それは本当にリーを知って良いです。ありがとう。 – ApolloSoftware

3

複数の質問が1つにまとめられています。

終了ボタンを使用することはできません。 HIGから

引用:人々がクラッシュとして解釈 する傾向があるので、

はプログラム

を終了しないでくださいは、プログラムのiOSアプリケーションを終了することはありません。ただし、外部の環境によってアプリケーションが意図したとおりに機能しないようにするには、ユーザーに状況について説明し、その操作について説明する必要があります。 アプリケーションの誤動作の程度に応じて、2つの選択肢があります( )。

問題を説明する魅力的な画面を表示し、 修正を提案します。画面には、あなたのアプリケーションに何も問題はないことをユーザーに安心させるフィードバックが提供されます。 これは、コントロールにユーザーを置く は、彼らがあなたのアプリケーションの機能の一部が動作していない場合にのみ、是正処置を取ると、 があなたのアプリケーションを使用して続行するか、ホームボタンを押すと 異なるアプリケーション

を開きたいかどうかを決定させる、ディスプレイユーザーが機能を有効にしたときに画面または警告が表示されます。 が機能していない機能にアクセスしようとすると、警告が表示されます。

これまでの解析では、目的式cの正規表現を使用することはできますが、うまくいきました。詳細はUsing regular expressions in iPhone SDKを参照するか、RegexKitLiteをご覧ください。

最後に、私はスクリーンスクレイピングの合法性を知らない。 :(ない弁護士。私もそれについての良い記事を見てきました。

https://stackoverflow.com/questions/822380/how-legal-is-screen-scraping

あなたにもWikipedia's entry on Web Scrapingを見てみるべきでしょう。

+0

Thanks Sam。私はRegexKitLiteをチェックアウトします。 – ApolloSoftware

関連する問題