JavaScript在Swift中修改HTML后,抓取它



我正在尝试编程我的第一个网站刮板,我的第一步是将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。

我在这里看到了这个答案,但它是用Swift 2.0写的,因为我,说实话,真的不明白是怎么回事(我没有太多的编程经验):我无法在Swift 3中工作。

所以,有没有一种方法可以从网站上获取HTML,运行JavaScript,然后将其保存为Swift 3中的字符串?如果有,你该怎么做?

谢谢!

经过一番挖掘,我找到了一些有效的方法:

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'
        }
}

最新更新