我如何从Swift中的网站请求文本?

时间:2015-02-17 22:20:49

标签: swift

所以我正在创建一个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))

那怎么办呢?

我一直在努力弄清楚如何解决这个问题,如果这可以解决,那就太棒了!

提前致谢:)

2 个答案:

答案 0 :(得分: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)
    }
}

答案 1 :(得分:0)

如果是您的网站,您可以通过提供仅提供文本的请求版本来节省很多麻烦。大多数Web框架允许您提供所需的任何格式,如果您选择提供例如text/plain你可以直接使用答案的正文。为此,您可能会实现一个可以作为

访问的请求
let url = NSURL(string: "www.examlpewebsite.com/message.txt")

将设置响应标头Content-Type: text/plain以指示它仅传送"文本"。这将节省您解析答案的工作量。请发布您喜欢的网页框架或搜索提供上述内容的答案,我相信您会找到一些内容。