JavaScript在Swift中修改后刮掉HTML?

时间:2016-10-08 17:52:27

标签: javascript html swift html-parsing

我试图编写我的第一个网站刮刀,我的第一步是将HTML保存为字符串。但是,据我所知,我需要获取的数据本身并不在HTML代码中,而是在JavaScript执行某些内容后添加。

我目前的代码是:

let myURLString = "Example URL"
let myURL = URL(string: myURLString)
var myHTMLString = ""

do {
            myHTMLString = try String(contentsOf: myURL!)
} catch let error {
            print("Error: \(error)")
}

但是这似乎并没有执行javascript而只是给了我未经处理的' HTML。

我读到了这个答案here,但它是用Swift 2.0编写的,因为我说实话,我并不真正理解发生了什么(我没有很多编程经验):我无法在Swift 3中工作。

那么,有没有办法从网站上获取HTML,运行JavaScript然后将其保存为Swift 3中的String?如果是这样,你怎么做?

谢谢!

1 个答案:

答案 0 :(得分:1)

经过一番挖掘后,我得到了一些有用的东西:

import Cocoa
import WebKit

    class ViewController: NSViewController, WebFrameLoadDelegate {

        @IBOutlet var myWebView: WebView!


        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view.

            self.myWebView.frameLoadDelegate = self

            let urlString = "YOUR HTTPS URL"
            self.myWebView.mainFrame.load(NSURLRequest(url: NSURL(string: urlString)! as URL) as URLRequest!)
        }

        override var representedObject: Any? {
            didSet {
                // Update the view, if already loaded.
            }
        }

        func webView(_ sender: WebView!, didFinishLoadFor frame: WebFrame!) {
            let doc = myWebView.stringByEvaluatingJavaScript(from: "document.documentElement.outerHTML")! //get it as html
            //doc now has the 'processed HTML'
        }

}