2015-02-17 38 views
1

因此,我正在製作iOS應用程序,並且每次打開應用程序時都會根據網站上顯示的文字製作一個警報欄。但是當我提出HTTP請求時,它只會給我那個網站的HTML。我將如何從網頁獲取文本而不是HTML?如何從Swift中的網站請求文本?

我使用的銀行代碼下面

let url = NSURL(string: "www.examlpewebsite.com") 
let request = NSURLRequest(URL: url!) 

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, text, error) in 
    self.alertLabel.text = (NSString(data: text, encoding: NSUTF8StringEncoding)) 

因此,如何將這樣做?

我一直在試圖找出如何做到這一點的年齡,所以如果這可以解決,那將是驚人的!

感謝提前:)

回答

1

您可以使用像Swift-HTML-Parser一個XML/HTTP解析器。只需在github存儲庫中檢查'Usage'信息即可。它顯示瞭如何將文件添加到您的項目。然後,您可以使用該框架來解析HTML:

//your HTML 
let html = (NSString(data: text, encoding: NSUTF8StringEncoding)) 

var err : NSError? 
var parser  = HTMLParser(html: html, error: &err) 
if err != nil { 
    println(err) 
    exit(1) 
} 

var bodyNode = parser.body 

//Add tags to search 
if let inputNodes = bodyNode?.findChildTags("b") { 
    for node in inputNodes { 
     println(node.contents) 
    } 
} 
+0

@Christian_Worez這看起來很有趣,但我寧願沒有擴展名,任何通用的快速方法來做到這一點? – 2015-02-17 22:39:18

+0

不是Swift方式,但大多數框架使用libxml2。所以你可以通過創建一個自己的框架來實現。但我建議你使用現有的框架之一。它會爲您節省大量的編碼時間,您可以用於其他事情。 :) – Christian 2015-02-17 22:42:30

+0

我給HTMLParser.swift,HTMLNode.swift和Swift-HTML-Parser-Bridging-Header.h他們自己的類嗎? btw謝謝你回答我的問題。 ;) – 2015-02-17 22:47:27

0

如果這是你的網站,你可以通過提供一個版本,提供只是文本的要求爲自己省下不少麻煩。大多數Web框架允許您提供任何您想要的格式,並且如果您選擇一個提供text/plain你可以直接使用答案的正文。要做到這一點,你可能會實現,你可以訪問如

let url = NSURL(string: "www.examlpewebsite.com/message.txt") 

這將設置響應頭Content-Type: text/plain,以表明它提供了「只是文本」的請求。這將爲您節省解析答案的工作量。請發佈您最喜愛的網頁框架或搜索提供上述內容的答案,我相信您會找到一些答案。

+0

這是我的網站,但我不知道什麼關於web框架:( – 2015-02-18 01:19:52

+0

仍然:你唱什麼來管理你的網站? – Patru 2015-02-21 10:59:27