【问题标题】:Read data from a html page in Swift从 Swift 中的 html 页面读取数据
【发布时间】:2015-12-10 13:57:38
【问题描述】:

我想编写一个应用程序来显示特定 HTML 页面的数据。 如何阅读文本,例如在 div 中并将该文本转换为字符串?如何在该页面上搜索某些内容或查看表格的行?

【问题讨论】:

    标签: html string swift search webview


    【解决方案1】:

    您需要注意完成此任务所需的步骤。

    首先需要加载html页面数据 用解析器找到你需要的东西之后。

    在第一步中我找到了这段代码

    let url = NSURL(string: "http://www.stackoverflow.com")
    
    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
         println(NSString(data: data, encoding: NSUTF8StringEncoding))
    }
    
    task.resume()
    

    来自此链接的示例How to make an HTTP request in Swift?

    看这个例子,你做一个请求并返回一个数据,这个数据需要是String。收到数据后,你需要解析以找到你想要的。

    第二步你需要工具来执行,简单的方法是使用像 slipt 这样的字符串方法。如果你需要更智能的东西,我推荐Regular Expression

    split 的简单示例(swift 1.2)

    var fullName = "First Last"
    var fullNameArr = split(fullName) {$0 == " "}
    var firstName: String = fullNameArr[0]
    var lastName: String? = fullNameArr.count > 1 ? fullNameArr[1] : nil
    

    示例(swift 2.0)

    let fullName = "First Last"
    let fullNameArr = split(fullName.characters){$0 == " "}.map(String.init)
    
    fullNameArr[0] // First
    fullNameArr[1] // Last
    

    来自Swift: Split a String into an array的示例

    这个链接是关于Regular Expression的好链接,注意它是一个强大的解析工具,用它你可以在你的html中搜索任何东西。

    NSRegularExpression Tutorial: Getting Started

    希望对您的解释有所帮助。

    【讨论】:

    • 感谢您的回答!我还有几个问题。让我们从第一个开始。我已经听说过解析器这个词,但你能快速解释一下它是什么以及我应该如何实现它。我试过解析。 Xcode 说它不知道“tfhpple”我该如何修复它?
    • 解析器,嗯...解析器是当您需要从 som 数据中提取一些信息时,例如所有html 页面都有<head><body>,想象一个网站有一个<div id="price">,并且您有一个应用程序需要从 html 页面加载价格。为此,您可以使用正则表达式在<div id="price"> </div> 之间搜索内容,并在您的应用程序中显示某物的价格.. 它正在解析某物.. 什么是tfhpple 可以说更多?出现时的一些例子!?
    • 我还看了一些其他教程,他们已经集成了一个 tfhpple 文件
    【解决方案2】:

    更新了语法 (swift 5) 并进行了一些修改以获取 html 数据:

    let url = NSURL(string: "https://www.stackoverflow.com")
        let task = URLSession.shared.dataTask(with: url! as URL) {(data, response, error) in
            if data != nil { // otherwise will crash for if url is empty
                let dataString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)!
                print("url data:",dataString)
            } else {print("url data not found")}
        }
    task.resume()
    

    【讨论】:

      猜你喜欢
      • 2020-05-20
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 2011-03-23
      • 2013-09-25
      • 2015-07-20
      相关资源
      最近更新 更多