![](/img/trans.png)
[英]UITableView - Grouped Table. iOS (Cocoa Touch), Objective-C
[英]Objective-C & Cocoa Touch Issue involving Screen Scrapes in iOS
我正在編寫一個iPhone應用程序,該應用程序抓取了URL www.drugs.com/imprints.php。 它采用四個參數(名稱,烙印,顏色,形狀)之一,並將其插入如下所示的URL參數中:
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中分發此代碼,那么由於我正在抓取第三方網站,是否合法? 我不打算出售它,而是免費贈送它。 最后,我在用戶界面中有退出按鈕,在iOS應用中擁有退出按鈕的合法性是什么? 蘋果會因為它而對它進行紅色標記嗎? (退出按鈕確實退出(0);)。
抱歉,但是我對Cocoa和iOS開發是陌生的,因此如果對這些問題進行補救,請提前就此道歉。
如果您查看www.drugs.com的服務條款,您可能會發現他們禁止在其網站上找到的任何未經授權的副本。 話雖如此,它仍然是合法的灰色地帶。 像80legs這樣的公司通過爬取禁止未經授權的復制然后出售結果的網站來獲利。 考慮到這一點,您不太可能因刮刮而面臨法律問題。
根據我在App Store上看到的其他應用程序,我認為Apple不太可能受到注意或關注。
您將幾個問題捆綁在一起。
您沒有退出按鈕。
來自HIG的報價:
不要以編程方式退出
切勿以編程方式退出iOS應用程序,因為人們傾向於將其解釋為崩潰。 但是,如果外部環境阻止您的應用程序按預期運行,則需要向用戶告知情況並說明他們可以采取的措施。 根據應用程序故障的嚴重程度,您有兩種選擇。
顯示描述問題並提出糾正建議的漂亮屏幕。 屏幕上會提供反饋,以確保用戶應用程序沒有任何問題。 它使用戶可以控制,讓他們決定是否要采取糾正措施並繼續使用您的應用程序,或者按“主頁”按鈕打開另一個應用程序
如果只有某些應用程序功能無法使用,請在人們激活該功能時顯示屏幕或警報。 僅當人們嘗試訪問不起作用的功能時才顯示警報。
就解析而言,您可以在目標c中使用正則表達式,但是看起來不錯。 有關更多信息,請參閱在iPhone SDK中使用正則表達式或查看RegexKitLite 。
最后,我不知道屏幕抓取的合法性。 :(不是律師。不過我看過很多不錯的文章。
https://stackoverflow.com/questions/822380/how-legal-is-screen-scraping
您還應該查看Wikipedia在Web Scraping上的條目 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.